bash - 如何在 Bash 中读取文件或标准输入

标签 bash stdin

以下 Perl 脚本 (my.pl) 可以从命令行参数中的文件或 standard input 中读取(标准输入):

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

perl my.pl 将从标准输入读取,而 perl my.pl a.txt 将从 a.txt 读取。这非常方便。

Bash 中是否有等效项?

最佳答案

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

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

替换 ${1:-...} 如果已定义,则采用 $1。否则,使用本进程标准输入的文件名。

关于bash - 如何在 Bash 中读取文件或标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414780/

相关文章:

bash - awk是否支持动态用户定义变量?

linux - 如何在 linux ssh here 脚本中禁止评论

python - 从 stdin python 读取

javascript - phantomjs 标准输入的事件监听器

c - 如何同时处理来自 Stdin Stream 的两个输入,其中一个来自 C 中的数字键盘?

bash - stdin 在管道传输和重定向时表现不同

c - 如何将标准输入中的字符读入c中的数组?

bash - 无法从 cygwin 运行 'aws'

bash - 使用别名更改 scp 命令

linux - 如何使用/dev/null 进行 bash 命令