Почему bash переходит в бесконечный цикл?

#linux #bash

#linux #bash

Вопрос:

Я пробовал разные способы эмуляции логической переменной в bash. Один из методов:

 readonly T=1
readonly F=0
((T)) amp;amp; echo "true" || echo "false"
((F)) amp;amp; echo "true" || echo "false"
 

который выводит true и false соответственно. Затем у меня случился мозговой спазм, и я набрал:

 ! ((F)) amp;amp; "yes"
 

ожидая увидеть yes в терминале. Однако без команды echo он переходил в бесконечный цикл, печатая y. Может кто-нибудь объяснить, что здесь делает bash?

Комментарии:

1. yes это имя программы, которая печатает y непрерывно.

2. Он знает, что это должно быть, он понял, что забыл echo .

Ответ №1:

bash не перешел в бесконечный цикл. Вы запускаете yes программу, описание которой:

yes — выводить строку повторно, пока не будет уничтожено

y это строка по умолчанию, которую он печатает. Цель состоит в том, чтобы передать его команде, которая будет задавать множество подтверждающих вопросов, чтобы вы могли дать один и тот же ответ на все из них. Например.

 yes | ./configure
 

Комментарии:

1. Чтобы ответить на точный вопрос, касающийся того, что bash делает: bash блокирует, ожидает yes завершения.