4
Я пытаюсь прочитать полный стандартного ввода в переменную:Читать полный текст стандартного ввода до EOF, когда стандартный ввод происходит от `cat` Баш
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.
Любые идеи?
Зачем использовать петлю? Вы не можете использовать 'IFS = read -r -d '' переменную'? – user000001
Обычно контроллер-D настроен на отправку EOF с клавиатуры, а не на управление-C. –
@ user000001: Я не знал об этом, спасибо – edi9999