どうやって走れますか?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