我想编写一个简单的bash脚本,它将充当可执行文件的包装器。如何将脚本接收的所有参数传递给可执行文件?我试过了
/the/exe $@
但这不适用于引用的参数,例如。
./myscript "one big parameter"
运行
/the/exe one big parameter
这不是一回事。
答案 0 :(得分:63)
当shell脚本包装可执行文件时,如果您不希望在可执行文件完成后执行任何操作(根据我的经验,这是包装器脚本的常见情况),调用可执行文件的正确方法是:
exec /the/exe "$@"
exec
内置告诉shell只是在不分叉的情况下控制可执行文件。
实际上,这可以防止无用的shell进程在包装进程终止之前在系统中闲置。
这也意味着在exec
命令之后无法执行任何命令。
答案 1 :(得分:14)
您必须将$@
放在引号中:
/the/exe "$@"