循环两个变量集

时间:2015-02-05 10:47:55

标签: bash loops variables

我需要编写一些bash脚本,它将循环遍历2个独立目录中提供的两组输入文件,并在一个循环步骤中将它们连接在一起作为某些程序的输入。 问题是两个文件夹中的每一个都包含10个不同的文件:i)i1,i2 .. i10和ii)j1,j2 ... j10在第二个但是在每个循环步骤中我应该提供i1,j1; i2,j2等配对作为输入。假设i和j在其文件名中都有共享关键字,我会写一些类似

的内容
input1=/data/input1
input2=/data/input2

for element_i, element_j in input1 and input 2  # actually I don't know how to define this step properly
# provide some condition if part of title of the element from i1 = i2
#e.g
title1=$(basename "element_i")
title2=$(basename "element_j")
if title1==title2
# run my program here using both inputs with same names
program -i1 element_i i2 element_j
break #? add something to stop loop for each pair only! and continue for the next elements!

所以我会非常感谢任何解决方案!

1 个答案:

答案 0 :(得分:0)

这是更准确的例子。以下是两个文件夹的输入

gleb@gpu2:/data2/Gleb/TEST/claire+7d4+md/water_analysis/MD1> ls tr_all
7D4-androsta.mdcrd  7D4-androste.mdcrd  7D4-decenal.mdcrd
gleb@gpu2:/data2/Gleb/TEST/claire+7d4+md/water_analysis/MD1> ls top_all
7D4-androsta.top  7D4-androste.top  7D4-apo.top  7D4-decenal.top
gleb@gpu2:/data2/Gleb/TEST/claire+7d4+md/water_analysis/MD1> ls
script.sh  top_all  tr_all  water.in~

和我的剧本

workdir=/data2/Gleb/TEST/claire+7d4+md/water_analysis/MD1
all_traj=${workdir}/tr
all_top=${workdir}/top


for top in all_top and for traj in all_traj; do # ????
 top_n=$(basename "$top")
 traj_n=$(basename "$traj")
 # add here some condition to make below step only if top==traj
 # make input for my program including imputs from both dirs
 printf "parm ${top_n}\ntrajin ${traj_n}\nwatershell ${Area} watershell_${top_n}_${Area}.dat :WAT@O* lower $low upper $up" > ./water_${top_n}.in

我正在寻找如何正确循环两个目录,2)如何仅从每个文件中选择名称而不使用其扩展名3)以及如何添加一些条件以仅在两个文件中进行输入具有相同的名称

詹姆斯