【发布时间】:2009-11-08 09:02:49
【问题描述】:
我想编写一个简单的 bash 脚本,作为可执行文件的包装器。如何将脚本接收到的所有参数传递给可执行文件?我试过了
/the/exe $@
但这不适用于带引号的参数,例如。
./myscript "one big parameter"
运行
/the/exe one big parameter
这不是一回事。
【问题讨论】:
标签: bash scripting parameters
我想编写一个简单的 bash 脚本,作为可执行文件的包装器。如何将脚本接收到的所有参数传递给可执行文件?我试过了
/the/exe $@
但这不适用于带引号的参数,例如。
./myscript "one big parameter"
运行
/the/exe one big parameter
这不是一回事。
【问题讨论】:
标签: bash scripting parameters
当 shell 脚本包裹可执行文件时,如果您不想在可执行文件完成后执行任何操作(根据我的经验,这是包装脚本的常见情况),调用可执行文件的正确方法是:
exec /the/exe "$@"
exec 内置函数告诉 shell 只将控制权交给可执行文件,而无需分叉。
实际上,这可以防止无用的 shell 进程在系统中徘徊,直到被包装的进程终止。
这也意味着exec命令之后不能执行任何命令。
【讨论】:
您必须将$@ 放在引号中:
/the/exe "$@"
【讨论】: