1

我的 shell 脚本中有以下代码

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

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

我哪里错了?

4

3 回答 3

2

您的命令完美运行:

sed -i 's/'"$a"'/world/' php1.php

但是,您的sed命令可以使用双引号自动扩展 shell 变量。试试这个:

sed -i "s/$a/world/" php1.php

我可能不完全理解您要完成的工作,但是如果您尝试替换helloworld(以一种相当迂回的方式),看起来您可能希望将-o标志添加到您的grep命令中:

a=$(grep -o "hello" php1.php)
于 2012-12-04T14:31:42.077 回答
0

看起来您的脚本的意图是将 php1.php 中包含单词“hello”的所有行替换为单词“world”。就是这样:

sed -i 's/.*hello.*/world/' php1.php

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

于 2012-12-06T01:48:39.570 回答
0

检查 $a 的值。我认为 $a 包含一些空间字符。

于 2012-12-04T10:26:21.207 回答