运行 在同一个 shell 中生成命令以访问定义的函数
Run generated commands in same shell in order to access defined function
在我的 Bash 脚本中,我生成了一个包含一系列命令的字符串。其中一些命令是对该脚本中定义的函数的引用。即:
function myfunc() {
...}
}
cmds=`echo "echo hello"; echo myfunc` # contrived, but you get the idea
bash $cmds
现在,运行通过调用新的 Bash 脚本来执行命令不起作用 - 函数 myfunc
未定义。
有办法解决这个问题吗?通过以某种方式使函数成为全局函数,或者通过在当前 shell?
中创建这些命令 运行
有两种方法:要么使用export -f
导出函数,要么使用eval
执行当前shell中的命令。
在这种情况下你可以使用eval
:
doit() { echo "ok"; }
foo="echo a; echo b; doit;"
eval "$foo"
或者输出到临时脚本并获取它。
或者您可以使用 export -f
导出函数 - 虽然这是 bash 特定的(还记得 shellshock 吗?)。
在我的 Bash 脚本中,我生成了一个包含一系列命令的字符串。其中一些命令是对该脚本中定义的函数的引用。即:
function myfunc() {
...}
}
cmds=`echo "echo hello"; echo myfunc` # contrived, but you get the idea
bash $cmds
现在,运行通过调用新的 Bash 脚本来执行命令不起作用 - 函数 myfunc
未定义。
有办法解决这个问题吗?通过以某种方式使函数成为全局函数,或者通过在当前 shell?
中创建这些命令 运行有两种方法:要么使用export -f
导出函数,要么使用eval
执行当前shell中的命令。
在这种情况下你可以使用eval
:
doit() { echo "ok"; }
foo="echo a; echo b; doit;"
eval "$foo"
或者输出到临时脚本并获取它。
或者您可以使用 export -f
导出函数 - 虽然这是 bash 特定的(还记得 shellshock 吗?)。