Может кто-нибудь объяснить, почему позиция следующего назначения вызывает бесконечный цикл?
Я пишу тестовую программу для экспериментов с конвейерами, использующими этот скрипт, который запускается на 2 терминалах, итретий терминал, который просто отражается на pipe1 и pipe2. Если я добавлю receive = "$ input" сразу после условия IF, то результатом будет бесконечный цикл на двух терминалах. Однако, если это назначение помещено в конец, оно работает отлично?
#!/bin/bash
received="null"
while true; do
read input < "$1" #this is either pipe1 or pipe2
if [ "$input" != "$received" ]; then
echo "$input"
echo "$input" > "$2" #again, either pipe1 or pipe2
received="$input"
fi
done
В терминале 1 я запускаю:
./r_w_test.sh pipe1 pipe2
И в терминале 2 я бегу:
./r_w_test.sh pipe2 pipe1
А затем в третьем терминале я бы запустил:
echo "hi" > pipe1
и т. Д. И т. Д.
Почему я получаю бесконечный цикл, когда назначение помещено здесь :
...
if [ "$input" != "$received" ]; then
received="$input"
echo "$input"
echo "$input" > "$2"
...