Почему новые строки портят мой в то время как условие?

4
07.11.2011, 00:13
2 ответа

В Вашем втором примере, путем размещения var и var2 на отдельных строках, это делает команду тем же как

while var=9876; var2=765; read line

while команда допускает список команд прежде, чем выполнить команды в - цикл с условием продолжения.   help while шоу это:

в то время как: в то время как КОМАНДЫ; сделайте КОМАНДЫ;готово
  Выполните команды, пока тест успешно выполняется.
  Разверните и выполните КОМАНДЫ пока заключительная команда в
  'в то время как' КОМАНДЫ имеют статус выхода нуля.
  Статус выхода: Возвращает состояние последней выполняемой команды.

С другой стороны, когда переменное присвоение предшествует команде (в этом случае read), и то присвоение только сопровождается пробелом, объем той переменной локален для команды ONLY! (внутренне)...

См.: В, 'в то время как IFS = чтение..', почему IFS не имеет никакого эффекта?

5
27.01.2020, 20:53
  • 1
    Вы могли, вероятно, получить многострочный стиль, Вы хотите использовать подоболочку - запускаются с открытия paren на первой строке и заканчивают его перед. Необходимо также смочь использовать функцию удара здесь также. –  Danny Staple 07.11.2011, 01:09
  • 2
    @Danny: Это действительно зависит от того, что Вы пытаетесь сделать. например, Для read сделать, чтобы локальная IFS оценила, затем IFS='?' read единственный путь. Обратите внимание что все команды между while и do названы последовательно каждый раз, когда это циклично выполняется. while только выходы, когда последняя команда выходит с ненулевым. Мудрый конструкцией read независимо от, 'делают - сделанный' блок. У Вас мог быть свой-материал в команде, помещенной между read и do и ничего не имейте в do-while. Однако для отъезда цикла с условием продолжения бремя находится на последней команде, которая выйдет с ненулевым значением в подходящее время. –  Peter.O 07.11.2011, 14:47

Я не знал, что удар мог сделать те вещи, поэтому благодарит отправить их.

Вот мое объяснение.

Эта строка в Вашем первом сценарии:

while var=9876 var2=765 read line 

на самом деле устанавливает переменную среды, названную "var" для оценки "9876", и устанавливает другую переменную среды, названную "var2" для оценки "765", но только для команды read line. Это - странная старая школьная оболочка "функция". Вот почему строка echo $var $var2 только распечатывает "1234" - переменная среды, названная "var" только, относится read line.

Второй сценарий, где переменные присвоения и read line появитесь на различных строках, я думаю, что это присваивает переменные оболочки, названные "var" и "var2" каждый раз через цикл.

1
27.01.2020, 20:53

Теги

Похожие вопросы