首页 > 解决方案 > 在 For 循环 (Bash) 中使用变量名称

问题描述

我有两组目录。在第一个目录中,我有 8 个文件:

file1.txt file2.txt file3.txt ... file8.txt

在名为 的第二个目录output中,我有多个子目录。我想编写进入每个子目录内部的 for 循环output(所以它们是directory1directory2等等......)并读取一个名为database_file_#.txt. 目前,我已经在下面编写了这个循环,但它一次只适用于一个目录。

for file in *; do 
name="${file%%.*}"
python script.py --parameter $file --out ../../output/directory1/${cts_name} 
--readin ../../output/directory1/database_file_1.txt 
done

对于第二个目录,我执行以下操作:

 for file in *; do 
name="${file%%.*}"
python script.py --parameter $file --out ../../output/directory1/${cts_name} 
--readin ../../output/directory2/database_file_2.txt 
done

我不想为输出中的所有目录重写目录#。有没有办法可以使用变量来代替?

标签: linuxbash

解决方案


for i in 1 2 3 4 5 6 7 8; do 
  for file in *; do 
    name="${file%%.*}"
    python script.py --parameter "$file" --out ../../output/directory"${i}/${cts_name}" \
        --readin "../../output/directory${i}/database_file_${i}.txt" 
  done
done

推荐阅读