当stdin来自`cat` bash时,读完全stdin直到EOF

时间:2015-08-19 09:34:33

标签: bash stdin cat

我试图将完整的stdin读入变量:

script.sh

#/bin/bash

input=""
while read line
do
  echo "$line"
  input="$input""\n""$line"
done < /dev/stdin



echo "$input" > /tmp/test

当我运行ls | ./script.sh或大多数其他命令时,它运行正常。

但是,当我运行cat | ./script.sh时输入我的消息,然后按Ctrl-C退出cat,它不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我会坚持单线

input=$(cat)

当然,Ctrl-D应该用于表示文件结束。