Bash:用引号替换字符串(错误的替换错误)

时间:2014-07-16 18:55:40

标签: string bash replace

我试图通过bash脚本(版本3.2)修改文件的行,并尝试了很多选项,但它们都给出了“错误的替换错误”。

例如,我从$ filename(先前定义的变量)

中提取行
line=$(sed -n 24p $filename)

echo ${$line/coordinateIndex="0"/coordinateIndex="124"} 

我正在尝试将coordinateIndex替换为其他一些数字。这些数字在文件中的“”之间,我需要保留该格式。

任何帮助表示感谢;谢谢!

1 个答案:

答案 0 :(得分:2)

echo ${$line/coordinateIndex="0"/coordinateIndex="124"} 

不应该有$ inside:

echo ${line/coordinateIndex="0"/coordinateIndex="124"}

您可能还需要正确引用它以正确匹配双引号。

echo ${line/coordinateIndex=\"0\"/coordinateIndex="124"}

最好将参数括在双引号中,以防止使用IFS值和意外路径名扩展进行单词拆分:

echo "${line/coordinateIndex=\"0\"/coordinateIndex="124"}"

查看有关Parameter Expansion in the Bash Manual的使用情况的详细信息。