我有abc.sh:
exec $ROOT/Subsystem/xyz.sh
在unix框上,如果我打印echo $ HOME,那么我得到/ HOME / COM / FILE
我想用$ HOME替换$ ROOT
预期产量:
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
说:
sed "s|\$ROOT|${HOME}|" abc.sh
注意:
>使用双引号使sed可以展开变量。
>使用与/不同的分隔符,因为替换包含/
因为你不想逃脱它,就逃避模式中的$。
编辑:为了替换所有出现的$ ROOT,比方说
sed "s|\$ROOT|${HOME}|g" abc.sh