Warm tip: This article is reproduced from serverfault.com, please click

其他-如何从Bash中的文件或STDIN中读取?

(其他 - How to read from a file or STDIN in Bash?)

发布于 2011-08-08 09:27:56

以下Perl脚本(my.pl)可以从命令行args上的文件或STDIN中读取:

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

perl my.pl将从STDIN读取,而perl my.pl a.txt从读取a.txt这非常方便。

想知道Bash中是否有一个等效项吗?

Questioner
Dagang
Viewed
0
238k 2015-08-20 04:37:09

如果以文件名作为第一个参数调用脚本,则以下解决方案从文件中读取,$1否则从标准输入中读取

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

如果定义,则替换${1:-...}$1使用自己进程的标准输入的文件名(如果没有定义)。