为bash命令转义perl backticks中的括号

为bash命令转义perl backticks中的括号,bash,perl,Bash,Perl,我已经使用backticks多年了,但这是我第一次尝试使用带括号的命令。我遇到了一个我无法理解的错误 我试着在多个地方加上双引号并用\转义,但似乎什么都不起作用。任何帮助都将不胜感激 命令 $file5和$file6是perl变量,而不是bash @array = `/usr/bin/join -j 1 -t, <(cat $file5 | awk -F, '{print \$3","\$1}' | sort) <( cat $file6 | awk -F, '{print \$3"

我已经使用backticks多年了,但这是我第一次尝试使用带括号的命令。我遇到了一个我无法理解的错误

我试着在多个地方加上双引号并用
\
转义,但似乎什么都不起作用。任何帮助都将不胜感激

命令
$file5
$file6
是perl变量,而不是bash

@array = `/usr/bin/join -j 1 -t, <(cat $file5 | awk -F, '{print \$3","\$1}' | sort) <( cat $file6 | awk -F, '{print \$3","\$1}' | sort) `

@array=`/usr/bin/join-j1-t,Backticks使用
/bin/sh
,而
Backticks使用
/bin/sh
,而
一种解决方法是创建一个shell脚本,从perl接受两个文件名,使用这两个输入文件处理连接,并将结果返回到perl数组

#1. Create join.sh that contains these four lines: cat $1 | awk -F, '{print $3","$1}' | sort > 1.out cat $2 | awk -F, '{print $3","$1}' | sort > 2.out /usr/bin/join -j 1 -t, 1.out 2.out rm 1.out 2.out #2. Modify your perl statement to call join.sh as follows: @array=`join.sh $file5 $file6`; #1.创建包含以下四行的join.sh: 类别$1 | awk-F,'{print$3',“$1}'| sort>1.out 类别$2 | awk-F,'{print$3',“$1}'| sort>2.out /usr/bin/join-j 1-t,1.out 2.out rm 1.out 2.out #2.修改perl语句以调用join.sh,如下所示: @array=`join.sh$file5$file6`;
一种解决方法是创建一个shell脚本,该脚本接受来自perl的两个文件名,使用这两个输入文件处理连接,并将结果返回到perl数组

#1. Create join.sh that contains these four lines: cat $1 | awk -F, '{print $3","$1}' | sort > 1.out cat $2 | awk -F, '{print $3","$1}' | sort > 2.out /usr/bin/join -j 1 -t, 1.out 2.out rm 1.out 2.out #2. Modify your perl statement to call join.sh as follows: @array=`join.sh $file5 $file6`; #1.创建包含以下四行的join.sh: 类别$1 | awk-F,'{print$3',“$1}'| sort>1.out 类别$2 | awk-F,'{print$3',“$1}'| sort>2.out /usr/bin/join-j 1-t,1.out 2.out rm 1.out 2.out #2.修改perl语句以调用join.sh,如下所示: @array=`join.sh$file5$file6`;
我认为错误消息中的
sh
是这里的重要提示。进程替换(你不想直接在Perl程序中这样做有什么原因吗?我认为错误消息中的
sh
是一个很大的提示(你不想直接在Perl程序中这样做有什么原因吗?)缺乏解释。缺少shebang。有四个代码注入错误。文件名选择不当。()缺乏解释。缺少shebang。有四个代码注入错误。文件名选择不当。()