在bash中调用perl脚本;而";陈述
我想要从bash脚本的while循环中调用perl脚本的帮助。我的脚本摘录如下:在bash中调用perl脚本;而";陈述,bash,Bash,我想要从bash脚本的while循环中调用perl脚本的帮助。我的脚本摘录如下: touch $OUTPUT_DIR/$OUTPUT_XML_PARSE while read -r LINE; do perl newscript.pl "$LINE" >> $OUTPUT_DIR/$OUTPUT_XML_PARSE done < $OUTPUT_DIR/$OUTPUT_FILENAME_LIST 触摸$OUTPUT\u DIR/$OUTPUT\u XML\u PAR
touch $OUTPUT_DIR/$OUTPUT_XML_PARSE
while read -r LINE; do
perl newscript.pl "$LINE" >> $OUTPUT_DIR/$OUTPUT_XML_PARSE
done < $OUTPUT_DIR/$OUTPUT_FILENAME_LIST
触摸$OUTPUT\u DIR/$OUTPUT\u XML\u PARSE
而read-r行;做
perl newscript.pl“$LINE”>>$OUTPUT\u DIR/$OUTPUT\u XML\u PARSE
完成<$OUTPUT\u DIR/$OUTPUT\u FILENAME\u列表
文件$OUTPUT\u FILENAME\u LIST包含一个文件名列表,Perl脚本使用每个文件名作为输入参数来打开和修改数据,并将输出写入$OUTPUT\u XML\u PARSE
运行程序时的错误是“无法打开perl脚本”IDOCXML_parse.pl:路径名中的文件或目录不存在。”。perl脚本与bash脚本位于同一目录中,因此我不确定为什么会出现这种情况。请告知。听起来您是在从/path/to以外的目录调用脚本,如
/path/to/myscript.sh
试一试
或
另外,bash-while读取循环非常慢。试试这个
xargs -I X -L 1 perl ./IDOCXML_parse.pl X < input.file > output.file
xargs-ix-l1 perl./IDOCXML_parse.pl Xoutput.file
或者重写perl脚本以接受文件名的输入文件,并让perl对其进行迭代。摆脱使用所有文件名的习惯。有朝一日,您将使用
PATH=…
并中断您的脚本。要了解有关shell变量命名标准的更多信息,请参阅。感谢Glenn,我尝试了不涉及while循环的代码,这导致了错误-“路径名中的文件或目录不存在。at/home/kal/IDOCXML_parse.pl第22行at/home/kal/IDOCXML_parse.pl第22行“,第22行是$twig->parsefile($ARGV[0])
。如何更改您的语句,使文件名作为参数传递给perl脚本?显然,输入文件中的文件名没有绝对路径。如果可以,请修复此问题。否则,您必须cd
到包含这些文件的目录,并使用绝对路径调用perl脚本
cd "$(dirname "$0")"
while read ...; do perl ./IDOCXML_parse.pl ...
xargs -I X -L 1 perl ./IDOCXML_parse.pl X < input.file > output.file