使用 bash 脚本将 outfile 传递给另一个程序
pass outfile to another program using bash script
我有以下 bash 代码,用于一批 运行 多个文件,由 3 个不同的程序处理:
for i in *.txt
do
program1 -in ${i} -out Prog1_out_${i}
program2 -in Prog1_out_${i} -out Prog2_out_${i}
program3 -in Prog2_out_${i} -out Prog3_out_${i}
done
我 运行 遇到问题,程序 2 找不到作为程序 1 输出的输入,当然程序 3 也找不到所需的输入。
任何人都可以提供解决问题的建议吗?
谢谢
如果程序在成功时产生输出,您可以使它们依赖于先前的命令成功,如下所示:
program1 -in ${i} -out Prog1_out_${i} &&
program2 -in Prog1_out_${i} -out Prog2_out_${i} &&
program3 -in Prog2_out_${i} -out Prog3_out_${i}
因此,如果其中一个程序失败,链的其余部分将不会被调用。
但是,如果输出的创建与程序的成功无关,而只是想检查文件是否存在,则可以在调用programx之前添加适当的检查,即
if [ -f "${i}" ]
then
progx ...
fi
因为你一直在做同样的事情,所以这可以推广到所有程序(未经测试):
for i in *.txt
do
mv $i Prog0_out_$i
for program in 0 1 2
do
INFILE=Prog{$program}_out_${$i}
if [ ! -r ${INFILE} ]
then
break
fi
program{$program} -in ${INFILE} -out "Prog{$program}_out_$((i+1))"
done
done
我有以下 bash 代码,用于一批 运行 多个文件,由 3 个不同的程序处理:
for i in *.txt
do
program1 -in ${i} -out Prog1_out_${i}
program2 -in Prog1_out_${i} -out Prog2_out_${i}
program3 -in Prog2_out_${i} -out Prog3_out_${i}
done
我 运行 遇到问题,程序 2 找不到作为程序 1 输出的输入,当然程序 3 也找不到所需的输入。
任何人都可以提供解决问题的建议吗?
谢谢
如果程序在成功时产生输出,您可以使它们依赖于先前的命令成功,如下所示:
program1 -in ${i} -out Prog1_out_${i} &&
program2 -in Prog1_out_${i} -out Prog2_out_${i} &&
program3 -in Prog2_out_${i} -out Prog3_out_${i}
因此,如果其中一个程序失败,链的其余部分将不会被调用。
但是,如果输出的创建与程序的成功无关,而只是想检查文件是否存在,则可以在调用programx之前添加适当的检查,即
if [ -f "${i}" ]
then
progx ...
fi
因为你一直在做同样的事情,所以这可以推广到所有程序(未经测试):
for i in *.txt
do
mv $i Prog0_out_$i
for program in 0 1 2
do
INFILE=Prog{$program}_out_${$i}
if [ ! -r ${INFILE} ]
then
break
fi
program{$program} -in ${INFILE} -out "Prog{$program}_out_$((i+1))"
done
done