我正在使用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的输出正确打印。
答案 0 :(得分:1)
变量不会在单引号内扩展。如果您希望扩展var
和val
,则需要双引号(并确保它们没有sed分隔符,其中包含/
):
sed -i "s/$var/$val/g" Hhh300_4L_gen.sh
虽然如果您正在修改shell脚本(因为我猜测可能来自.sh
),可能有更好的方法来执行此操作,例如拥有.txt
文件将事物存储为var=val
而不是用空格分隔它们,然后从脚本中获取它。