sed 用变量替换值

Tob*_*obi 4 bash shell sed

我的配置中有一个变量,我想用一个值替换它。

ROOT="rROOT"
Run Code Online (Sandbox Code Playgroud)

我想将其替换为

ROOT="$root"
Run Code Online (Sandbox Code Playgroud)

$root 的值也是如此(重要的是引号)。

到目前为止我已经尝试过这种方式

sed -i s/'ROOT=rROOT'/'ROOT="$root"'/g $directory/settings.conf
Run Code Online (Sandbox Code Playgroud)

结果是

ROOT="$root"
Run Code Online (Sandbox Code Playgroud)

但这存储在变量 $root 中(它始终是一个路径)

root: /
Run Code Online (Sandbox Code Playgroud)

如何用 $root 的值替换 rROOT?

Sed 版本:(GNU sed)4.2.2

use*_*own 5

好吧,不想破坏我的测试脚本:

cat tageslog.sh | sed "s/alt=185094/alt=\${root}/g"
Run Code Online (Sandbox Code Playgroud)

使用双引号,但屏蔽美元符号,这样在调用 sed 时它就不会丢失并且 root 不会被解释。

使用 ${root} 而不是“$root”。

sed "s/ROOT=.rRoot./ROOT=\${root}/g" $directory/settings.conf
Run Code Online (Sandbox Code Playgroud)

如果有效,请使用 -i 开关:

sed -i "s/ROOT=.rRoot./ROOT=\${root}/g" $directory/settings.conf
Run Code Online (Sandbox Code Playgroud)