我不能不在表单中使用 shellsed
变量$NUMBER
。我的 shell 脚本中有这一行:
cat shared.txt sed 's/whatever1/$2 ... whatever2/' > shared2.txt
结果shared2.txt
看起来像:
...$2....
我做错了什么?
答案1
尝试使用双引号而不是单引号:
sed "s/whatever1/$2 ... whatever2/" shared.txt > shared2.txt
答案2
虽然使用双引号有效,但在某些情况下这不会给出您想要的结果。例如,
t="bcd"
echo '123$tbcd' | sed "s/$t$t//"
(是的,这有点做作!)。您可以通过转义某些字符来避免这种情况:
echo '123$tbcd' | sed "s/\$t$t//"
但很容易错过这一点。在我看来,最安全的方法是将变量用双引号括起来(这样空格就不会中断 sed 命令)并用单引号将字符串的其余部分括起来(以避免转义某些字符的必要性):
echo '123$tbcd' | sed 's/$t'"$t"'//'.