我希望在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脚本位于同一目录中,因此我不确定为什么会出现这种情况。请指教。
答案 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迭代它。