当标准输入来自 `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
应该用来表示文件结束。
我正在尝试将完整的标准输入读取到一个变量中:
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
应该用来表示文件结束。