【发布时间】:2011-10-14 21:25:13
【问题描述】:
我正在努力执行一组以字符串形式存储在数组中的命令行。 我的代码如下所示:
arr=( "sudo apt-get update" "sudo apt-get install xxx" )
...
arr=( ${arr[@]} "ln -s /path1 /path2" )
etc...
# Then I loop on the array of command
for (( i = 0 ; i < ${#arr[@]} ; i++ ))
do
eval ${arr[$i]}
done
当它遍历数组时,数组大于存储在其中的命令数。好像我的字符串中的空格将数组拆分为更多元素 一个典型的输出是这样的
usage: sudo -h | -K | -k | -L | -V
这意味着只有“sudo”是从字符串中取出的,我不明白为什么!
谢谢
【问题讨论】:
-
你能说明
loc_com是如何设置/使用的吗? -
正如 chown 所说,你能在调用它之前放一个 echo ${loc_com[$i]} 吗?
-
您能否发布一个无需编辑也能正常工作的测试用例?
-
@chown 抱歉,我弄错了,它是 'arr' 而不是 'loc_com',我也错过了循环中的一个 '#'
标签: bash