使用 declare 保存函数定义

发布于 2023-03-18 15:17:25 字数 1375 浏览 129 评论 0

今天才知道原来 declare -f 可以导出函数的定义。以下是 bash manual 中的部分片段

  函数名和定义可以使用内建命令  declare  或  typeset  加上  -f 参数来列出。
  如果在 declare 或 typeset 命令中使用 -F  选项将只列出函数名。
  函数可以使用内建命令 export 加上 -f 参数导出,使得子 shell 中它们被自动定义。

也就是说,我们可以使用 declare -f 函数名 来输出指定函数的定义。

function test()
{
    local now=$(date)
    echo Now is ${now}
}
declare -f test
test () 
{ 
    local now=$(date);
    echo Now is ${now}
}

若执行 declare -f 时不带任何函数名,则会列出所有函数的定义:

function test1()
{
    echo test1
}

function test2()
{
    echo test2
}
declare -f
test1 () 
{ 
    echo test1
}
test2 () 
{ 
    echo test2
}

我们因此可以定义一个用来保存函数定义的函数

save_function()
{
    while [[ https://blog.lujun9972.win/blog/2019/07/25/使用declare保存函数定义/$ ]];
    do
        date +"* %F.%T $1"
        echo "#+BEGIN_SRC shell"
        declare -f "$1"
        echo "$+END_SRC"
        shift
    done
}
save_function save_function
* 2019-07-25.18:42:09 save_function
#+BEGIN_SRC shell
save_function () 
{ 
    while  https://blog.lujun9972.win/blog/2019/07/25/使用declare保存函数定义/$ ; do
        date +"* %F.%T $1";
        echo "#+BEGIN_SRC shell";
        declare -f "$1";
        echo "$+END_SRC";
        shift;
    done
}
$+END_SRC

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文