如何在Bash中从文件或标准输入读取数据

326

下面的 Perl 脚本(my.pl)可以从命令行参数指定的文件或者标准输入(STDIN)读取:

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

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

Bash 中有类似的功能吗?

22个回答

0

只需测试脚本的参数数量,并测试第一个参数($1)是否为文件。如果为假,则使用标准输入 -

#!/bin/bash
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"
cat $input

请参见此问题。


-1

使用:

for line in `cat`; do
    something($line);
done

cat 命令的输出将被放置在命令行中。命令行有最大尺寸限制。此外,它不会逐行读取,而是逐个单词读取。 - Notinlist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接