以下Perl脚本(my.pl
)可以从命令行参数中的文件读取,也可以从standard input (STDIN)读取:
while (<>) {
print($_);
}
perl my.pl
将从标准输入读取,而perl my.pl a.txt
将从a.txt
读取。这非常方便。
在Bash中有没有类似的东西?
发布于 2011-08-13 03:44:50
如果使用文件名作为第一个参数$1
调用脚本,则以下解决方案将从文件中读取,否则将从标准输入中读取。
while read line
do
echo "$line"
done < "${1:-/dev/stdin}"
如果定义了替换${1:-...}
,则它采用$1
。否则,将使用自己进程的标准输入的文件名。
发布于 2013-05-11 04:48:52
发布于 2014-03-27 03:25:27
我认为这是最简单的方法:
$ cat reader.sh
#!/bin/bash
while read line; do
echo "reading: ${line}"
done < /dev/stdin
--
$ cat writer.sh
#!/bin/bash
for i in {0..5}; do
echo "line ${i}"
done
--
$ ./writer.sh | ./reader.sh
reading: line 0
reading: line 1
reading: line 2
reading: line 3
reading: line 4
reading: line 5
https://stackoverflow.com/questions/6980090
复制相似问题