#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
завершения.