将bash脚本参数传递给子进程不变

时间:2009-11-08 09:02:50

标签: bash scripting parameters

我想编写一个简单的bash脚本,它将充当可执行文件的包装器。如何将脚本接收的所有参数传递给可执行文件?我试过了

/the/exe $@

但这不适用于引用的参数,例如。

./myscript "one big parameter"

运行

/the/exe one big parameter

这不是一回事。

2 个答案:

答案 0 :(得分:63)

当shell脚本包装可执行文件时,如果您不希望在可执行文件完成后执行任何操作(根据我的经验,这是包装器脚本的常见情况),调用可执行文件的正确方法是:

exec /the/exe "$@"

exec内置告诉shell只是在不分叉的情况下控制可执行文件。

实际上,这可以防止无用的shell进程在包装进程终止之前在系统中闲置。

这也意味着在exec命令之后无法执行任何命令。

答案 1 :(得分:14)

您必须将$@放在引号中:

/the/exe "$@"