時々私は多くのファイルに私のスクリプトを使用したいと思います。
私がこれを使用する理由は次のとおりです。
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"
答え2
#!/bin/bash n=1 echo "$0 は $# 個の引数を取得します..." そして[ $# -gt 0 ];do エコ "$n: $1" 移動する n=$(($n + 1 )) 完璧
または、「$ *と$ @を使用してパラメータを一覧表示する」を探します
。http://www.tldp.org/LDP/abs/html/abs-guide.html
これらの側面の多くは詳細に説明されます。