シェルスクリプトで複数のイベントにワイルドカードを使用する方法は?

シェルスクリプトで複数のイベントにワイルドカードを使用する方法は?

パターンに一致するすべての入力にワイルドカード入力を使用したいと思います。例:

$ cat file_lister.sh
echo $1

$ ls *.txt
file1.txt
file2.txt
file3.txt

$ ./file_lister.sh ./*.txt
file1.txt

しかし、私のスクリプトが印刷されることを期待しています。

file1.txt
file2.txt
file3.txt

ベストアンサー1

スクリプトを実行するとき:

$ ./file_lister.sh ./*.txt

シェルは./*.txtに拡張されるので、./file1.txt ./file2.txt ./file3.txt拡張後に実際には次のようになります。

$ ./file_lister.sh ./file1.txt ./file2.txt ./file3.txt

スクリプトは最初のパラメータを印刷します。

echo $1

$1スクリプトに渡された最初の引数に対応します。この場合は./file1.txt- I'd like to see it の代わりにfile1.txt(実際に実行しない限り./file_lister.sh *.txt) です。

他の人がコメントで提案したように印刷するにはみんな最初の主張よりも多くのことができます。最も簡単な方法は、$1(最初​​のパラメータ)を$@(すべてのパラメータ)に変更することです。

#!/bin/bash
printf '%s\n' "$@"

バラよりスタックオーバーフローに関するこの質問スクリプトのパラメータ処理に関する追加情報

おすすめ記事