"$@"似乎让,消失。例如
param="123 1,2"
set echo $param
"$@"
Run Code Online (Sandbox Code Playgroud)
这将回显“123 1 2”而不是“123 1,2”,但在某些情况下,需要作为命令的值。
这似乎与bash版本有关,在bash 4.1.2中,结果是正确的,但在4.2.46中,逗号丢失了。
编辑:
简而言之,也许应该nice归咎于:
我unset IFS这样做了,在终端中,我给出的测试用例工作正常,但与我的脚本无关。
我实际上正在编写一个初始化脚本,我检查了action()中的函数/etc/init.d/functions,并添加了一些调试代码:
echo "$@" # added by me
unset IFS # added by me
"$@" && success $"$STRING" || failure $"$STRING"
Run Code Online (Sandbox Code Playgroud)
回显的命令是正确的( nice -n -10 ovs-vswitchd ... --socket-mem 1024,1024),但结果是psnice 实际执行的命令变成了ovs-vswitchd ... --socket-mem 1024 1024。
我开始想也许这是nice罪魁祸首。
请在拆分 param 之前(在 command 之前)直接在脚本中设置 IFS set。例如,做这样的事情:
oldIFS=$IFS
param="123 1,2"
IFS=" " # put tabs and or newline if also wanted.
set echo $param
IFS=$oldIFS
"$@"
Run Code Online (Sandbox Code Playgroud)
无论您之前的 IFS 是什么,这都将起作用。
| 归档时间: |
|
| 查看次数: |
1239 次 |
| 最近记录: |