意外令牌附近的语法错误`('在perl脚本中执行时)

时间:2017-08-10 17:03:28

标签: perl syntax-error

我有这个命令可以在命令提示符下运行:

sed \'/SOAP service initialization completed/ q\' <(exec tail -n +0 -f /Users/xxxx/Desktop/sample.txt); kill $! 2> /dev/null

哪个工作正常。它会丢弃示例文件,并在遇到&#34; SOAP服务初始化完成后退出&#34;信息。当我尝试在perl脚本中执行它时

\#!/usr/bin/perl

my $tail_command = qq{sed \'/SOAP service initialization completed/ q\' <(exec tail -n +0 -f /Users/xxxx/Desktop/sample.txt); kill \$! 2> /dev/null;};

system($tail_command);
exit;

我收到此错误

sh: -c: line 0: `sed '/SOAP service initialization completed/ q' <(exec tail -n +0 -f /Users/xxxx/Desktop/sample.txt); kill $! 2> /dev/null;'

1 个答案:

答案 0 :(得分:0)

如果您在将命令输入system之前尝试打印命令,它将为您节省很多麻烦,我总是这样做。

正在运行

$> perl -de 1  
DB> $tail_command = qq{sed \'/SOAP service initialization completed/ q\' <(exec tail -n +0 -f /Users/xxxx/Desktop/sample.txt); kill \$! 2> /dev/null;};
DB> print $tail_command

我进入输出:

sed '/SOAP service initialization completed/ q' <(exec tail -n +0 -f /Users/xxxx/Desktop/sample.txt); kill $! 2> /dev/null;

哪个与原始字符串不对应。你必须添加一些转义字符。