Bashでファイルまたは標準入力から読み取る方法 質問する

Bashでファイルまたは標準入力から読み取る方法 質問する

次のPerlスクリプト(my.pl)は、コマンドライン引数のファイルまたは標準入力(標準入力):

while (<>) {
   print($_);
}

perl my.plは標準入力から読み取りますが、perl my.pl a.txtは から読み取りますa.txt。これは非常に便利です。

Bash に同等のものはありますか?

ベストアンサー1

次のソリューションは、スクリプトが最初のパラメータとしてファイル名で呼び出された場合はファイルから読み取り$1、それ以外の場合は標準入力から読み取ります。

while read line
do
  echo "$line"
done < "${1:-/dev/stdin}"

定義されている場合は置換${1:-...}が行われます$1。定義されていない場合は、自身のプロセスの標準入力のファイル名が使用されます。

おすすめ記事