【发布时间】:2013-10-09 17:22:53
【问题描述】:
我有abc.sh:
exec $ROOT/Subsystem/xyz.sh
在 Unix 机器上,如果我打印 echo $HOME,那么我会得到 /HOME/COM/FILE。
我想使用 sed 将 $ROOT 替换为 $HOME。
预期输出:
exec /HOME/COM/FILE/Subsystem/xyz.sh
我试过了,但没有得到预期的输出:
sed 's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
加法:
如果我有abc.sh
exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
然后用
sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
它只是替换第一个$ROOT,即输出为
exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
【问题讨论】:
-
@tripleee 虽然我确信这将与许多其他问题重复,但您指出的问题并不是最好的问题,因为它在变量中不包含斜杠.其中的所有答案都使用
/作为分隔符。显而易见的东西,我知道,但为更好的(重复)问题留出了空间。