Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash sh函数的exec_Bash_Function_Sh_Exec - Fatal编程技术网

Bash sh函数的exec

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完成 将函数更改为

这里常用的程序通常在shell脚本的末尾调用,我们使用
exec
跳过隐式
fork
,并防止
sh
进程等待命令完成:

。。。
执行mycommand
#未实现
但是,最近我们在命令周围实现了一个包装函数,以便在其中包含一些常见参数:

。。。
函数mycommand(){
命令mycommand-foo-bar“$@”
}
调用
exec mycommand
的代码继续调用实际的程序,而不是调用函数,因此我们不得不将其替换为
mycommand

但是现在调用shell等待
mycommand
完成

将函数更改为always
exec 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