Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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 语法错误在perl中使用管道(|)时出现意外标记_Linux_Perl_Shell_Awk - Fatal编程技术网

Linux 语法错误在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]; 我会给你想要

我正在为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];
我会给你想要的

我的意思是:

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没问题。如果你对你的问题进行编辑,使它更清楚地表明你想做什么,那么它将使你的问题对其他人更有用。将您遇到错误的确切代码张贴出来。目前,我的回答只是一般性的建议。