Bash sh函数的exec
这里常用的程序通常在shell脚本的末尾调用,我们使用Bash sh函数的exec,bash,function,sh,exec,Bash,Function,Sh,Exec,这里常用的程序通常在shell脚本的末尾调用,我们使用exec跳过隐式fork,并防止sh进程等待命令完成: 。。。 执行mycommand #未实现 但是,最近我们在命令周围实现了一个包装函数,以便在其中包含一些常见参数: 。。。 函数mycommand(){ 命令mycommand-foo-bar“$@” } 调用exec mycommand的代码继续调用实际的程序,而不是调用函数,因此我们不得不将其替换为mycommand 但是现在调用shell等待mycommand完成 将函数更改为
exec
跳过隐式fork
,并防止sh
进程等待命令完成:
。。。
执行mycommand
#未实现
但是,最近我们在命令周围实现了一个包装函数,以便在其中包含一些常见参数:
。。。
函数mycommand(){
命令mycommand-foo-bar“$@”
}
调用exec mycommand
的代码继续调用实际的程序,而不是调用函数,因此我们不得不将其替换为mycommand
但是现在调用shell等待mycommand
完成
将函数更改为alwaysexec mycommand
是不可接受的,因为它并不总是脚本中的最后一个命令。经常,但不总是
我们是如何获得这两种功能的:一种包装功能,另一种是在适当的情况下执行程序而无需分叉的能力?创建一个单独的函数(
exec\u mycommand
)看起来很难看…您可以将exec放在函数后面,而不是放在函数前面
function mycommand () {
if [ "$1" = exec ]; then
shift
exec command mycommand -foo -bar "$@"
else
command mycommand -foo -bar "$@"
fi
}
然后在主体中放入mycommand exec
或mycommand