我怎样才能跑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