jav*_*top 1 linux bash scripting command-line arguments
我想编写一个包装器bash脚本,并将所有参数传递给被调用的程序.我很确定,这是正常的:
#!/bin/sh
someProgam $@
Run Code Online (Sandbox Code Playgroud)
但是当传递异国情调的论点(空洞,未转义,引号,......)时,这就失败了.
例如:没有包装器脚本,会someProgram "1 2" 3产生参数
[1 2]和[3].
但是从脚本调用,我得到的[1],[2],[3].
大括号仅用于可视化.
注意:这是一个Java程序,它被称为.但我觉得没关系.
#!/bin/sh
someProgram "$@"
Run Code Online (Sandbox Code Playgroud)
BTW1,"$@"并不特定于bash.您可以依赖"$@"跨平台sh脚本在任何地方运行.
BTW2,如果这恰好是该脚本中的最后一行,您可以通过将行更改为类似的方式将操作系统保存几个字节并在流程表中保存一个条目
exec someProgram "$@"
Run Code Online (Sandbox Code Playgroud)