Linux 语法错误在perl中使用管道(|)时出现意外标记
我正在为know编写Perl脚本,我花了很多时间在脚本中查找这种错误Linux 语法错误在perl中使用管道(|)时出现意外标记,linux,perl,shell,awk,Linux,Perl,Shell,Awk,我正在为know编写Perl脚本,我花了很多时间在脚本中查找这种错误 syntax error near unexpected token `|' ` | awk -F '/' '{print $11}'' 这是我脚本中发生错误的一行 awk-F\'=\'{print\$2}\'$bundle}awk-F\'/\'{print\$11}\' 这就是我所做的。这是我想要的文件名 在perl中,使用split而不是调用外部命令: (split '/', $bundle)[10]; 我会给你想要
syntax error near unexpected token `|'
` | awk -F '/' '{print $11}''
这是我脚本中发生错误的一行
awk-F\'=\'{print\$2}\'$bundle}awk-F\'/\'{print\$11}\'
这就是我所做的。这是我想要的文件名 在
perl
中,使用split
而不是调用外部命令:
(split '/', $bundle)[10];
我会给你想要的
我的意思是:
use strict;
use warnings;
my $bundle = "a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/";
print `echo $bundle | awk -F \'/\' \'{print \$11}\'`;
print ((split '/', $bundle)[10], "\n");
两行都将输出k
但是我很困惑,您的命令周围的双引号是用来做什么的?根本不需要在
perl
中使用echo
和awk
。请显示您的完整代码,或者至少更多代码,因此,我们可以看到该字符串在程序其余部分的上下文中出现的位置。如果$bundle
包含shell特殊字符,则需要在将其传递给shell之前正确引用它。有quotemeta()
,但正确的解决方案实际上是在Perl中拆分值,正如@TomFenech的回答中所建议的那样;(b)问题不在您发布的代码片段(即,一个未配对的引号字符)的范围内。我不明白您的意思。。请你重新措辞好吗?@user3534255实际上我想我误解了你的问题。你能编辑它来添加更多的上下文吗?@user3534255:Tom猜测的是,我同意,你只需要$bundle
中字符串的第十一个字段,在斜杠上拆分/
。如果是这样的话,my$field=(拆分“/”,$bundle)[10]
会像他说的那样为你做!我明白你的意思了,你知道。。谢谢:)@user3534255没问题。如果你对你的问题进行编辑,使它更清楚地表明你想做什么,那么它将使你的问题对其他人更有用。将您遇到错误的确切代码张贴出来。目前,我的回答只是一般性的建议。