在bash中调用perl脚本"同时"声明

时间:2018-04-17 15:52:05

标签: 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_FILENAME_LIST包含一个文件名列表,每个文件名都是Perl脚本用作输入参数来打开和修改数据并将输出写入$ OUTPUT_XML_PARSE。

运行程序时的错误是&#34;无法打开perl脚本&#34; IDOCXML_parse.pl&#34;:路径名中的文件或目录不存在。&#34; 。 perl脚本与bash脚本位于同一目录中,因此我不确定为什么会出现这种情况。请指教。

1 个答案:

答案 0 :(得分:1)

听起来您正在从/ path / to之外的某个目录中调用/path/to/myscript.sh之类的脚本。

尝试

perl "$(dirname "$0")/IDOCXML_parse.pl" ...

cd "$(dirname "$0")"
while read ...; do perl ./IDOCXML_parse.pl ...

另外,bash while-read循环非常慢。试试这个

xargs -I X -L 1 perl ./IDOCXML_parse.pl X < input.file > output.file

或重写perl脚本以接受输入的文件名文件,并让perl迭代它。