在 shell 中永久替换变量

在 shell 中永久替换变量

我有一个文件<temp_test.sh>,其中定义了一个变量Min_Inc=300000

然后我想获取用户输入来更改的值Min_Inc。我遵循了以下步骤。

  1. 使用 读取值echo $Min_Inc并显示它。
  2. 寻求用户输入的新值并用 读取它read New_Val
  3. 尝试Min_Inc=300000用asMin_Inc=$New_Val替换sedsed '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

相关内容