我有这个命令可以在命令提示符下运行:
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;'
答案 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;
哪个与原始字符串不对应。你必须添加一些转义字符。