ワイルドカードをスクリプト入力として繰り返す

ワイルドカードをスクリプト入力として繰り返す

時々私は多くのファイルに私のスクリプトを使用したいと思います。

私がこれを使用する理由は次のとおりです。

for etminput in $1
do
    #process
done

ただし、これは最初の入力のみを提供します。各ワイルドカードマッチに対してこのプロセスをどのように実行できますか?

ベストアンサー1

Bourneに似たシェルでスクリプトのすべてのパラメータを繰り返すには、次の手順を実行します。

for i do
  something with "$i"
done

次のようにすることもできます。

for i in "$@"; do
  something with "$i"
done

しかし、より長くて携帯性が低下します(最新のケースには適していますが)。

気づく:

for i; do
  something with "$i"
done

BourneもPOSIXでもないので避けてください(多くのシェルで動作しますが)。


完全性を期すためにBourneシェルではない場合:

csh/tcsh

@ i = 1
while ($i <= $#argv)
  something with $argv[$i]:q
  @ i++
end

以下は使用できません:

foreach i ($argv:q)
  something with $i:q
end

これは空のパラメータをスキップするためです。

RC/アカンガ

for (i) something with $i

rc通常は殻です。しなければならない図)。

英語

for (i=$*) something with $i

(esはステロイドのrcです)。

for i in $argv
  something with $i
end

扱いにくい

Bourneの構文を受け入れますが、次の短い構文もサポートしています。

for i ("$@") something with "$i"

おすすめ記事