为bash命令转义perl backticks中的括号
我已经使用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"
\
转义,但似乎什么都不起作用。任何帮助都将不胜感激
命令
$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。有四个代码注入错误。文件名选择不当。()