【发布时间】:2019-10-19 14:00:09
【问题描述】:
在循环运行但循环中断时在 bash 脚本中运行另一个脚本! 注:我提到的脚本只是循环当前目录中的文件并运行 mpirun。 这是我的 bash 脚本:
#!/bin/bash
np="$1"
bin="$2"
ref="$3"
query="$4"
word_size="$5"
i=1;
input="$query"
while read line; do
echo $line
if [[ "${line:0:1}" == ">" ]] ; then
header="$line"
echo "$header" >> seq_"${i}".fasta
else
seq="$line"
echo "$seq" >> seq_"${i}".fasta
if ! (( i % 5)) ; then
./run.sh $np $bin $ref $word_size
^^^^^^^^
#for filename in *.fasta; do
# mpirun -np "${np}" "${bin}" -d "${ref}" -ql "${filename}" -k "${word_size}" -b > log
# rm $filename
#done
fi
((i++))
fi
done < $input
【问题讨论】:
-
循环何时中断?这个循环退出的唯一方法是如果没有更多数据可以从
$query命名的文件中读取。 -
事实并非如此。还有很多行要读取,但是在第一次 run.sh 运行后循环中断
-
run.sh是否从标准输入读取?它从循环中继承其标准输入,因此它会在read line有机会再次执行之前消耗其余数据。 -
不,它没有,run.sh 只是循环当前目录中的文件并运行另一个程序并将每个文件传递给刚刚由 run.sh 调用的程序
-
@chepner 是对的,
mpirunconsumes stdin
标签: bash