我的 shell 脚本中有以下代码
a=$(cat php1.php | grep 'hello')
echo $a
sed -i 's/'"$a"'/world/' php1.php
变量正在正确打印。但是,当我将它作为参数传递给 sed 命令时,sed 命令不起作用。
我哪里错了?
您的命令完美运行:
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)
看起来您的脚本的意图是将 php1.php 中包含单词“hello”的所有行替换为单词“world”。就是这样:
sed -i 's/.*hello.*/world/' php1.php
如果您正在尝试做其他事情,请告诉我们它是什么,我们可以为您提供帮助。
检查 $a 的值。我认为 $a 包含一些空间字符。