次の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
。定義されていない場合は、自身のプロセスの標準入力のファイル名が使用されます。