私は次のようなものを書こうとしています
for i in {a..z} && j in {1..26}
do
echo "/dev/sd"$i"1 /disk$j ext4 noatime 1 1" >> test
done
もちろん、これは正しい構文ではありません。誰かがこれを行うための正しい構文で私を助けてくれますか?
そのために配列を使用できます。
A=({a..z}) B=({1..26})
for (( I = 0; I < 26; ++I )); do
echo "/dev/sd${A[I]} /disk${B[I]} ext4 noatime 1 1" >> test
done
出力例:
/dev/sda /disk1 ext4 noatime 1 1
...
/dev/sdz /disk26 ext4 noatime 1 1
アップデート:
示唆されているように、B の値にインデックスを使用できます。
A=('' {a..z})
for (( I = 1; I <= 26; ++I )); do
echo "/dev/sd${A[I]} /disk${I} ext4 noatime 1 1" >> test
done
printf
また、より良い出力とよりクリーンなコードを得るために、いくつかのフォーマットを行うこともできます:
A=('' {a..z})
for (( I = 1; I <= 26; ++I )); do
printf "%s%20s%15s%15s%4s%2s\n" "/dev/sd${A[I]}" "/disk${I}" ext4 noatime 1 1 >> test
done
また、データをファイルに追加するつもりはなく、生成された一連の行ごとに 1 回だけ書き込む場合は、代わりにブロックごとにリダイレクトするだけです。
A=('' {a..z})
for (( I = 1; I <= 26; ++I )); do
printf "%s%20s%15s%15s%4s%2s\n" "/dev/sd${A[I]}" "/disk${I}" ext4 noatime 1 1
done > test