bash - 运行另一个脚本后循环中断的 Bash 脚本
问题描述
在循环运行但循环中断时在 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
解决方案
问题是您的run.sh
脚本没有将参数传递给mpirun
. 该脚本将变量传递${np} ${bin} ${ref} ${filename} ${word_size}
给mpirun
,但这些变量对于您的主脚本来说是本地的,并且在run.sh
. 您可以在主脚本中导出这些变量,以便它们可用于所有子进程,但更好的解决方案是在以下位置使用位置参数run.sh
:
for filename in *.fasta; do
mpirun -np "${1}" "${2}" -d "${3}" -ql "${4}" -k "${5}" -b > log
rm $filename
done
推荐阅读
- r - dplyr 保留丢失的数据
- node.js - 必须多次测试 lambda 才能工作
- elasticsearch - 尽管 SearchBuilder 工作正常,但 JestClient Get.Builder 失败
- java - Java中list durint printf的分离元素
- reactjs - 在 Next.js 中设置和获取 URL 参数
- java - ORA-29531: 类 %s 中没有方法 %s 在 oracle PLSQL 中调用 java 源
- mysql - 将动态值传递给 WSO2 DBLook 'like' 查询
- angularjs - $location 不改变 AngularJS 中的路径
- jquery - 在其他元素单击时从切换元素中删除活动类
- c# - 报表参数“ReportParameter1”是只读的,不能修改。(rsReadOnlyReportParameter)