Perl在使用管道时会出现回跳
我在尝试捕获简单命令的输出时遇到一些问题:Perl在使用管道时会出现回跳,perl,sh,backticks,Perl,Sh,Backticks,我在尝试捕获简单命令的输出时遇到一些问题: $timeTotal = `echo $timeTotal + $time | bc -l`; 但我得到了以下错误: sh: +: not found sh: Syntax error: "|" unexpected 这个命令在bash中工作得很好,但似乎实际使用了sh。一开始我认为问题在于管道的使用(尽管总和也没有得到很好的解释)。让我困惑的是,同一脚本中的以下命令不会导致错误,并且工作正常: my $time = `cat $out.$step
$timeTotal = `echo $timeTotal + $time | bc -l`;
但我得到了以下错误:
sh: +: not found
sh: Syntax error: "|" unexpected
这个命令在bash中工作得很好,但似乎实际使用了sh。一开始我认为问题在于管道的使用(尽管总和也没有得到很好的解释)。让我困惑的是,同一脚本中的以下命令不会导致错误,并且工作正常:
my $time = `cat $out.$step | bc -l`;
有什么建议吗?
$timeTotal
包含一个不应该包含的尾随换行符,因此您正在执行
echo XXX
及
而不是
echo XXX + YYY | bc -l
你肯定错过了某个地方的chomp
您的命令中还有一个不合适的双引号。不推荐使用反勾号。改用
qx(..)
语法
$timeTotal = qx(echo $timeTotal + $time | bc -l");
您知道Perl可以做加法,对吧?有点离题:您到底为什么要使用shell命令来做(非常)简单的数学
$timetotal+=$time
是您要查找的perl代码。是否不推荐使用反勾号?你有这方面的消息来源吗?没有提到他们在报告中被弃用。这根本不能回答问题。
$timeTotal = qx(echo $timeTotal + $time | bc -l");