Выполните две команды, если первая не сработает

Я пишу скрипт.sh как:

ls a || ls > /dev/null || echo "both command fails"; exit 3 echo 5 # not showed up 

Я надеюсь, что exit 3 будет выполнен только тогда, когда сработали команды command1 и command2. Но кажется, что даже если ls > /dev/null в порядке, exit 3 все еще срабатывает, делает echo 5 никогда не появлялся.

Что-нибудь, что я могу сделать, чтобы исправить это?

One Solution collect form web for “Выполните две команды, если первая не сработает”

Проблема в том, что || связывает плотнее, чем ; , поэтому ваша первая строка состоит из двух команд: первая – составная команда: ls || ls || echo ls || ls || echo ls || ls || echo а второй – только exit 3 . Как упоминалось в комментарии meuh, вы должны написать

 ls a || ls > /dev/null || { echo "both command fails"; exit 3; } echo 5 # not showed up 
  • shell: сохранить завершающие символы новой строки ('\ n') в подстановке команд
  • Что эквивалентно `type` (используется в bash и sh) в csh?
  • Цитирование фигурных скобок в оболочке
  • Как добавить методы для спешки (Ruby shell)?
  • Как определить функцию `bc` для последующего использования?
  • Закрытие дескриптора файла,> & - vs <& -
  • Debian: Как получить текущее имя загруженного ядра?
  • Установка последней версии R для Linux
  • Как объединить два файла в соответствующую строку?
  • Как переключиться с неизвестной оболочки на bash?
  • Как я * надежно * и * просто * получить текущее имя интерпретатора оболочки?
  • Interesting Posts

    Неработающая ссылка / запуск на рабочем столе Kubuntu 11.10 после удаления rekonq

    Может ли Xorg-Server и Wayland-Compositor запускаться одновременно в Linux?

    Копировать / Вставить с клавиатурой в rxvt

    Различия и отношения между VIRT и ИСПОЛЬЗОВАННЫМИ в выпуске top?

    Остановить разбитые монстры NFS от блокировки каталога?

    Разница между параметрами командной строки «-» и «-» с префиксом?

    Как оболочка (например, bash) расширяет шаблоны подстановок?

    Где скачать исходный код ядра Linux определенной версии?

    Сетевая файловая система + локальный доступ

    Установка элементарной ОС – будет ли она автоматически добавляться в меню Grub?

    Таинственная запись IO

    Преобразование WMA для playitslowly

    Как заблокировать имена хостов с помощью подстановочных знаков или Regex?

    tcpdump несколько pcaps с xargs

    Postfix: Могу ли я настроить его на * не * включить исходный адрес электронной почты на непоставленный?

    Linux и Unix - лучшая ОС в мире.