使用两个变量运行 for 循环?

使用两个变量运行 for 循环?

我怎样才能跑for循环或者two variables换句话说,这样做可以接受吗?我将通过以下示例来澄清我的问题:

我在文本文件“names.txt”中包含字母列表,在文本文件“numbers.txt”中包含数字,“numbers.txt”中的每个数字等于“names.txt”中的字母(行行)我想创建文件夹,其名称在names.txt中+数字在numbers.txt中

names.txt       numbers.txt         output_folder name
A               1                   A1
B               2                   B2
C               3                   C3
D               4                   D4
E               5                   E5

要创建文件夹的名称包含在名称中。文本我可以使用以下代码:

#!/bin/bash
in=/in/on/an
out=/ss/tt/nn
for i in $(cat $in/names.txt); do
 mkdir ${in}/${i}
done

如何将第二个变量添加到 for 循环中,即在前面的代码中,我们的变量 i 属于名称.txt 如何添加属于数字.txt 的变量 b?

答案1

如果这确实是您所需要的,那么您可以这样做

mkdir $(paste letters.txt numbers.txt | tr -d '\t')

这将为您创建目录。对于 bash 中的一般情况,通常以类似的方式完成:

paste letters.txt numbers.txt | while read let num; do 
    mkdir "${let}${num}" 
done

要回答您的具体问题,您不能for在 bash 中运行具有多个变量的循环,但正如您所看到的,通常有一些解决方法。最接近的是使用数组。例如:

let=( $(cat letters.txt) )
num=( $(cat numbers.txt) )
for((i=0;i<${#let[@]};i++)); do 
    mkdir "${let[$i]}${num[$i]}"
done

相关内容