2014-11-08 37 views
0

我生成一个自定义脚本使用PHP,然后每隔一分钟我称之为。Linux的 - cronjob与sed返回错误

它是这样的:

grep -rl 'text1' ./ | xargs sed -i 's/text1/text'"$1"'/g' 

当我运行它作为根(手动),它的伟大工程,但是当通过运行crontab我得到这个错误:

sed: -e expression #1, char 44: unterminated `s' command 
./b.sh: 5: ./b.sh: [[: not found 

如何解决?

+2

运行以'ENV -i脚本/ b.sh'更加紧密地模型的crontab的环境。这听起来像你至少错过了shebang – 2014-11-08 18:34:59

+0

@thatotherguy谢谢!我发现这个问题 – m3hdi 2014-11-08 19:30:50

回答

1

首次...所以喜

此错误 sed: -e expression #1, char 44: unterminated S'command` 意味着‘s’中包含特殊字符,导致SED以不同的方式解释命令。

这是由于bash插入变量作为传递给sed的命令的一部分,并且如果它具有任何特殊字符,它会更改输出。我猜“s”是与环境变量,因为它工作正常,但不是在crontab中。

我不熟悉sed,但是您可能需要通过在前面加一个反斜杠\来避开$ FOO变量,如果这不起作用,可能需要awk。

有关如何使用sed/awk的示例,请参阅参考资料。

参考:https://unix.stackexchange.com/questions/75310/why-is-sed-giving-me-an-error-about-an-unterminated-s