私がしなければならないのは、15のディレクトリ(1から15までの名前を付ける)を生成するスクリプトを作成し、各ディレクトリに文字(アルファベット順)を割り当てる必要があることです。
したがって、スクリプトを実行した後は、次のようにする必要があります。
ディレクトリ 1 には文字 A が含まれ、ディレクトリ 2 には B が含まれ、数字 15 に達し、文字 O. が含まれるまで続きます。
答え1
bashではなくawkとquipです。
echo {A..O} | xargs -n 1 | awk '{system("mkdir "NR" && touch "NR"/"$1)}'
答え2
letters=(0 A B C D E F G H I J K L M N O)
i=1
while [ ${i} -le 15 ]
do
mkdir ${i}
touch ${i}/${letters[${i}]}
(( i++ ))
done
説明:文字は、数値に対応する文字を含む配列です。配列の最初の項目はインデックス0にあります。数字は1から始まるので、塗りつぶし文字を入力しました。それが何であるかは問題ではありません。
i
値が1から15の間に変更されると、mkdir
そのディレクトリ名のコマンドが実行されます。i
letters
その後、各ディレクトリに配列の対応する文字名となるファイルが作成されます。
答え3
以下は、その文字を含むファイルを含むディレクトリを作成する方法です。
#!/bin/bash
declare -r LETTERS=(A B C D E F G H I J K L M N O) # Read Only Letters Array
declare -i COUNTER=0 # Integer Variable "COUNTER"
while [ $COUNTER -lt 15 ]; do # While Counter Less Than 15 Do...
COUNTER+=1 # Add 1 to counter
mkdir $COUNTER # Make the directory
echo > $COUNTER/${LETTERS[$COUNTER-1]} # Create the file
done
私がエコーを使用する理由は、過去にタッチに問題があったからです(そしてエコーはうまく機能します)。
もともとスイッチケースを使いたかったのですが(あまり連絡が悪いので)、配列の使用にMelBurslanの例を使用しました。
答え4
#!/bin/bash
set -- {A..O}
j=0
for i
do j=$((j+1))
mkdir "Dir$j"
touch "Dir$j/$i"
done
コードはタスクを実行するために位置パラメータを使用するため、これらのパラメータは削除されます(重要ではありませんが、注意してください)。