3

これは簡単な答えかもしれませんが、グーグルで調べた後、用語がダウンしている可能性があるため、私が求めていることについてまだ何も見つけていません.

/bin/*.txt などの引数を受け入れる場合、各ファイルをどのように反復処理しますか?

私はこれを試しました:

for file in $2; do
    echo $file
done

2 番目の引数 ($2) には /bin/*.txt などの入力がありますが、echo は私が持っている 6 つのテキスト ファイルのうち 1 つしか出力しません。これを間違って繰り返していますか?

私も ls をそのまま使ってみましたが、正しく印刷されません...

ls $2
4

1 に答える 1

7

引数が引用符で囲まれていない限り、スクリプトが引数を認識する前に/bin/*.txt引数が展開されます。したがって、引数がまだの場合は、そのグロブに一致するファイルがないことを確認できます。それ以外の場合は、一致するすべてのファイルに一致する複数の引数があり、引数を使用できます。/bin/*.txt

for file; do # equivalent to for file in "$@"
    echo "$file"
done

引数を引用したい場合は、自分で展開する必要があります。配列はこれを行うための適切な方法です。

arg='/bin/*.txt'
files=( $arg )
for file in "${files[@]}"…
于 2012-07-23T20:48:37.437 に答える