我有一个文件<temp_test.sh>
,其中定义了一个变量Min_Inc=300000
。
然后我想获取用户输入来更改的值Min_Inc
。我遵循了以下步骤。
- 使用 读取值
echo $Min_Inc
并显示它。 - 寻求用户输入的新值并用 读取它
read New_Val
。 - 尝试
Min_Inc=300000
用asMin_Inc=$New_Val
替换sed
sed 's/Min_Inc=300000/Min_Inc=$New_Val/'
这给出了一条错误消息。此外,我想使此更改永久生效,可以通过将输出重定向到另一个文件来实现。
答案1
变量不会在单引号内扩展。您要么需要使用双引号:
sed -i "s/Min_Inc=300000/Min_Inc=$New_Val/" /path/file-name
或者打破变量的引号:
sed -i 's/Min_Inc=300000/Min_Inc='$New_Val'/' /path/file-name
该-i
标志将值写回文件,您甚至可以通过向标志添加字符串来备份文件-i
。例如,-i.bak
将创建一个扩展名为 的备份文件.bak
。