Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux-带sed返回错误的cronjob_Linux_Sed_Crontab - Fatal编程技术网

linux-带sed返回错误的cronjob

linux-带sed返回错误的cronjob,linux,sed,crontab,Linux,Sed,Crontab,我使用php生成一个自定义脚本,然后每分钟调用一次 有点像: grep -rl 'text1' ./ | xargs sed -i 's/text1/text'"$1"'/g' 当我以root用户身份(手动)运行它时,效果很好,但当通过crontab运行时,我会出现以下错误: sed: -e expression #1, char 44: unterminated `s' command ./b.sh: 5: ./b.sh: [[: not found 如何修复它?第一次。。。你好 这个错误

我使用php生成一个自定义脚本,然后每分钟调用一次

有点像:

grep -rl 'text1' ./ | xargs sed -i 's/text1/text'"$1"'/g'
当我以root用户身份(手动)运行它时,效果很好,但当通过crontab运行时,我会出现以下错误:

sed: -e expression #1, char 44: unterminated `s' command
./b.sh: 5: ./b.sh: [[: not found
如何修复它?

第一次。。。你好

这个错误
sed:-e表达式#1,字符44:unterminated
s'命令` 表示“s”包含特殊字符,这些字符会导致sed以不同方式解释命令

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

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

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


参考:

使用
env-i./b.sh运行脚本,以更接近地模拟crontab的环境。听起来你至少错过了一次机会shebang@thatotherguy谢谢我觉得这有问题