спасибо :D. В свое мнение не правильное? Но вы все-таки доработал свой ответ и удалил побега `\`. Дефис-это не специальный символ. Зачем это нужно экранирование? Я не заботятся для веб-реализации, я просто догадался, что это, возможно, споткнулся, что, если оператор был "не работает". Получается, на мой командной строки я могу "убежать" через черточку. Так что это скорее вещи, чем символ escape-последовательности. Почему нет ... я думаю. Может быть, вы не хотите, чтобы исполняемый разрешения ("х") на территории одни. Вариант Да, количество копий делает жизнь немного легче. Но это все еще слишком много работы. Не могу WhatsApp по умолчанию интеграцию с TrueCaller в него? Какая версия RHHI? Где вам предлагается поставить на MAC-адрес точно? Я не могу найти ничего подобного в реальной инструкции по развертыванию из красной шляпе. Привет Марк, я хотел бы поехать в следующем году, между Февралем и апрелем. Я в Киото, так что я уеду от аэропорта Кансай. В Мексике я приеду в Мехико. В Венесуэле я хочу поехать в хорошее место рядом с океаном, желательно недалеко от Маракайбо.

От человека Баша:

  • набор -у
    • Лечить неопределенные переменные и параметры, кроме специальной параметров "@" и "*" как ошибка при выполнении параметра расширения. Если расширение покушение на неопределенная переменная или параметр, оболочка печатает сообщение об ошибке, и, если не nteractive, выходит с ненулевым статусом.

В POSIX утверждает, что, в случае расширения ошибку, не-интерактивной оболочки должны выйти для расширения связан с оболочкой специальные встроенные (который является различие Баш регулярно игнорирует в любом случае, а так может быть уже неактуально) или другую программу, кроме того.

  • Последствия консоли ошибок:
    • К расширению ошибки является тот, который возникает, когда корпус расширения, определенные в слово экспансии осуществляются (например, "${х!Г}", потому что ! не является допустимым оператором); реализация могут рассматривать их как синтаксические ошибки, если она способна обнаружить их во время лексического анализа, а не при расширении.
    • [А]н интерактивная оболочка должна написать диагностическое сообщение в стандартный поток ошибок без выхода.

Также от человека Баша:

  • ловушка ... подстраховаться
    • Если sigspec является заблуждаться, команда арг выполняется всякий раз, когда газопровод (которая может состоять из одной простой команды), списком или составная команда возвращает ненулевой статус выхода, и при соблюдении следующих условий:
      • На подстраховались ловушка не выполняется, если не команда входит в список команд сразу после во время или до сайта...
      • ...часть теста в случае, если заявление...
      • ...части команды выполняются в && или || списка, за исключением команды после финального && или ||...
      • ...любую команду в трубопроводе, но последнее...
      • ...или если команды возвращают значение инвертируется с помощью !.
    • Эти же условия соблюдаются errexit -электронный вариант.

Обратите внимание, что подстраховаться ловушка всех о оценке некоторых других команд вернуться. Но когда расширение ошибка возникает, нет команды выполнить, чтобы вернуть все. В вашем примере, Эхо никогда не произойдет - потому что в то время как оболочка анализирует и расширяет свои аргументы, он обнаружил nset переменной, которая была указана на явную оболочку параметр, чтобы вызвать немедленный выход из текущего, скриптовые оболочки.

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

Что касается РЧ: 0 штука, я ожидал, что версия, конкретный глюк какой-то - наверное, связано с двумя триггерами на выходе , происходящие одновременно и в одной другой код выхода (что не должно произойти). И вообще, с вверх-к-дата Баш бинарный как установлено Пакман:

баш <<\в
 е "параметры оболочки:\т$-\н"
 ловушка 'Эхо "выход (РЦ: $?)"' Выход
 комплект -ЕС
 Эхо ${UNSET_VAR}
В

Я добавил в первой строке, так что вы можете увидеть, что оболочка условиях те из сценария оболочки - это не интерактивные. Вывод:

варианты раковины: НВ
Баш: строка 4: UNSET_VAR: несвязанных переменных
Выход (код: 1)

Вот несколько важных заметок из последней записи:

  • Исправлена ошибка, приводившая асинхронных команд не установлен $? правильно.
  • Исправлена ошибка, которая вызвала сообщения об ошибках, генерируемые расширением ошибокв для команды, чтобы иметь неправильный номер строки.
  • Исправлена ошибка, приводившая радиоразведки и на которых он слушал , чтобы не быть ловушкойpable в асинхронном подуровень команды.
  • Исправлена проблема с обработки прерываний, которые вызвали второго и последующих радиоразведки быть проигнорированы интерактивную оболочку.
  • Оболочка не блокируют поступление сигналов во время работы ловушки обработчики для этих сигналов, и позволяет большинство ловушку обработчики будут выполняться рекурсивно (работает ловушка обработчики, в то время как ловушка обработчик выполняется).

Я думаю, что это последний или первый, что имеет самое непосредственное отношение - или, возможно, сочетание этих двух. В ловушку обработчик является по своей природе асинхронная , потому что вся его работа-ждать и обработки асинхронных сигналов. И вы два триггера одновременно с ЕС и $UNSET_VAR.

И поэтому, возможно, вам следует просто обновить, но если вы любите себя, вы будете делать это с другой оболочке в целом.