当变量作为参数传递时,sed命令在shell脚本中不起作用

时间:2012-12-04 08:40:38

标签: shell sed

我的shell脚本中有以下代码

a=$(cat php1.php | grep 'hello')
echo $a
sed -i 's/'"$a"'/world/' php1.php

变量正确打印。但是当我将它作为参数传递给sed命令时,sed命令无效。

我哪里错了?

3 个答案:

答案 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

如果您正在尝试做其他事情,请告诉我们它是什么,我们可以帮助您。

相关问题