ダッシュの範囲はどのように機能しますか?

ダッシュの範囲はどのように機能しますか?

ダッシュで次のbashスクリプトをすばやく実行する方法を見つけようとしています。

for x in {1..5}
do
    for y in {a..c}
    do
    echo $HOME$x$y
    done
done

Dash は中かっこ拡張をサポートしておらず、上記のスクリプトを模倣するスコープに似た構成を取得する他の方法を知りません。 whileループで解決できると思いますが、スクリプト適応ではなく全く違う獣だと思います。

Dashで上記のスクリプトの精神を維持することは可能ですか? seqのような外部プログラムを使用せずに上記のスクリプトの精神を維持できますか?どのように?

ベストアンサー1

角かっこ拡張自体はPOSIXでは定義されておらず、他のPOSIX互換ツールのオプションを使用して変換する必要があります。そのようなアプローチの1つは、ASCIIテーブルを使用して文字のASCII値を対応する文字値に変換することですprintf()。価値マッピングを見つけてくださいman ascii

i=1
asciiStart=97
asciiEnd=99
while [ "$i" -le 5 ]
do
    while [ "$asciiStart" -le "$asciiEnd" ]
    do
        echo "$HOME$i$(printf "\\$(printf '%03o' "$asciiStart")")"
        asciiStart=$((asciiStart + 1))
    done
    asciiStart=97
    i=$(( i + 1 )) 
done

おすすめ記事