2つの変数を使用してforループを実行しますか? [コピー]

2つの変数を使用してforループを実行しますか? [コピー]

どうやって走れますか?forループまたはtwo variables、言い換えれば、これは許可されますか?次の例で私の質問を明確にします。

テキストファイル「names.txt」に文字リストがあり、テキストファイル「numbers.txt」に数値リストがあります。 「numbers.txt」の各数字は、「names.txt」の文字(1行ずつ)と同じです。 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ループに2番目の変数を追加する方法、つまり前のコードでは、変数iはname.txtに属します。 number.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

特定の質問に答えるために、bashでは複数の変数を使用してループを実行することはできませんが、見てわかるように、一般的forにいくつかの回避策があります。最も近いのは配列の使用です。たとえば、

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

おすすめ記事