sed不在read while循环中工作

时间:2017-06-29 14:53:40

标签: bash sed

我正在使用read在while循环中创建一些文件。代码是:

while read var val
do
 sed -i 's/$var/$val/g' Hhh300_4L_gen.sh
 echo $var $val
done < "Hhh300_4L_config.txt"

Hhh300_4L_config.txt中的位置,例如,有一行

PROCESSNAME Hhh;

并且在Hhh300_4L_gen.sh中,有一个元素:PROCESSNAME。因此,如果有效,则PROCESSNAME中的Hhh300_4L_gen.sh应替换为Hhh。但它并没有。但是,echo的输出正确打印。

1 个答案:

答案 0 :(得分:1)

变量不会在单引号内扩展。如果您希望扩展varval,则需要双引号(并确保它们没有sed分隔符,其中包含/):

sed -i "s/$var/$val/g" Hhh300_4L_gen.sh

虽然如果您正在修改shell脚本(因为我猜测可能来自.sh),可能有更好的方法来执行此操作,例如拥有.txt文件将事物存储为var=val而不是用空格分隔它们,然后从脚本中获取它。