从Bash中的文件和标准输入读取

时间:2017-10-29 01:55:50

标签: bash stdin

我想知道我是否可以编写一个shell脚本,它接受两个同时的参数,一个来自文件,另一个来自stdin。你能举个例子吗?。

我在尝试

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

但这不起作用。

2 个答案:

答案 0 :(得分:1)

您可以使用cat -cat /dev/stdin

while read line; do
  # your code
done < <(cat "$1" -)

while read line; do
  # your code
done < <(cat "$1" /dev/stdin)

或者,如果你想读取通过命令行以及stdin 传递的所有文件,你可以这样做:

while read line; do
  # your code
done < <(cat "$@" /dev/stdin)

另见:

答案 1 :(得分:0)

This topic似乎对此有所帮助:

{ cat $1; cat; } | while read line
   do
   echo "$line"
done

或者只是

cat $1
cat

如果你正在做的就是打印内容