我的shell脚本中有以下代码
a=$(cat php1.php | grep 'hello')
echo $a
sed -i 's/'"$a"'/world/' php1.php
变量正确打印。但是当我将它作为参数传递给sed命令时,sed命令无效。
我哪里错了?
答案 0 :(得分:2)
你的命令完美无缺:
sed -i 's/'"$a"'/world/' php1.php
但是,您的sed
命令可以使用双引号自动扩展shell变量。试试这个:
sed -i "s/$a/world/" php1.php
我可能无法完全理解您要完成的任务,但如果您尝试将hello
替换为world
(以相当圆润的方式),它看起来像您可能希望将-o
标志添加到grep
命令:
a=$(grep -o "hello" php1.php)
答案 1 :(得分:0)
检查$ a的值。我认为$ a包含一些特殊字符。
答案 2 :(得分:0)
看起来你的脚本的意图是将php1.php中包含单词“hello”的所有行替换为“world”。那只是这个:
sed -i 's/.*hello.*/world/' php1.php
如果您正在尝试做其他事情,请告诉我们它是什么,我们可以帮助您。