当标准输入来自 `cat` 时读取完整的标准输入直到 EOF bash

Read full stdin until EOF when stdin comes from `cat` bash

我正在尝试将完整的标准输入读取到一个变量中:

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 时它不起作用。

有什么想法吗?

我会坚持单线

input=$(cat)

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