我正在尝试将字符串转换为数组并循环该数组以将每个值作为参数传递给bash命令。执行脚本时,我收到错误的替换消息。
text = 'xdc','cde','erd','ded','ded','kie';
OIFS=$IFS;
IFS=',';
ids=$($text);
for (i=0; i<${#ids[@]}; ++i);
do
echo "$i"
done
IFS=$OIFS
我编写的这个脚本,以及如何将索引值作为参数传递给for循环内的命令。
首先,您需要删除字符串变量赋值周围的文本:
text="'xdc','cde','erd','ded','ded','kie';"
然后,您可以使用bashread
命令的数组形式:
IFS=, read -a ids <<< "${text%;}"
其中${text%;}
取代去除拖尾分号。请注意,通过这种方式,不会在read
命令之外修改IFS,因此无需保存和还原它。
您的C样式for-loop语法几乎是正确的,除了在bash中,该循环需要双括号,例如
for ((i=0; i<${#ids[@]}; ++i)); do printf '%s\n' "${ids[i]}"; done
另外,您可以使用for ... in
循环直接循环遍历数组成员:
for i in "${ids[@]}"; do printf '%s\n' "$i"; done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句