我有两个bash脚本示例。我所做的只是使用Map[Int, Set[Int]]
来替换文件中的一些字符串。运行脚本时指定该文件。因此,您可以像sed
一样运行它。
./replace_file.sh input_file
和
hug="g h 7"
for elm in $hug
do
echo "replacing $elm"
sed -i'_backup' "s/$elm/BOO/g" $1
done
上面的第一个脚本,回显如下:
hug=('g' 'h' '7')
for elm in $hug
do
echo "replacing $elm"
sed -i'_backup' "s/$elm/BOO/g" $1
done
但是,第二个在replacing g
replacing h
replacing 7
之后停止。我不清楚为什么。有人可以解释一下吗?
谢谢。
答案 0 :(得分:2)
如注释中所述,当您尝试通过调用for elm in $hug
迭代数组中的元素时,您只是引用数组中的第一个元素。要迭代数组中的元素,可以使用数组语法,例如${array[@]}
按顺序访问每个元素(您可以引用数组以保留元素中的空格。)在您的情况下,您只需要:
#!/bin/bash
hug=('g' 'h' '7')
for elm in ${hug[@]}
do
echo "replacing $elm"
# sed -i'_backup' "s/$elm/BOO/g" $1
done
<强>输出强>
$ bash arrayiter.sh
replacing g
replacing h
replacing 7