たとえば、n個のソートされたサブディレクトリからコマンドを実行します。ここで、nは入力です。または、その範囲を入力として使用できるサブディレクトリ範囲に対してforループをどのように実行できますか?以下のように、ここで範囲をどのように定義する必要がありますか?
for d in ["sd1"-"sd2"] do ( cd "$d" && do stuff ) done
ベストアンサー1
中かっこ拡張をサポートするシェルがある場合は、中かっこ拡張を使用してください。
for d in sd{1..2}; do
( cd "$d" && dostuff )
done
zsh
、ksh93
またはyash -o braceexpand
(除く)を使用してbash
これを実行できます。
n=4
for d in sd{1..$n}; do
( cd "$d" && dostuff )
done
関連質問:"eval"なしで{}拡張で変数を使用できますか?
これに対するバリエーションは次のとおりです。
for (( i=1; i<=n; ++i )); do
str="sd$i"
( cd ... )
done
for
これは、他のシェルでサポートされているのと同じCスタイルループですbash
(まだPOSIX標準の拡張にもかかわらず)。