Вопрос по bash – Как сделать обновление hg или клонировать в одну строку bash?

3

Я ищу вариант, чтобы сделать обновление hg в хранилище или клонировать его, если он не существует. Таким образом, команда должна завершиться ошибкой, только если что-то пошло не так (клонирование или обновление).

Это должно работать вbashжелательно, если у вас естьset -e уже настроен.

Сделай ответ! Тем не менее, я хотел бы не видеть никаких ошибок в выводе, когда команда выполнена успешно. Тем не менее, видеть их, когда это терпит неудачу, очень желательно. sorin
Неhg конкретный, но ... зачем тебе это в одной команде?A || B должен поступить правильно и потерпеть неудачу, только если обаA а такжеB провал. (чтобы уточнить, что-то вродеhg update || hg clone <source>) Amadan
Я не понимаю вопроса, не могли бы вы объяснить?hg update являетсяобычн выполненоизнутр репо, например~/src/myproj$ hg up. hg clone, с другой стороны, выполняется, когда нет реп, as in ~ / src $ hg клон Сервер / MYPROJ myproj`. Как вы представляете свою объединенную команду для вызова? Где Helgi
На самом деле согласен с @Helgi здесь ... Amadan

Ваш Ответ

2   ответа
6

Оператор дизъюнкции в bash,||, может выполнить этот сценарий: попробуйте первую команду, если не получится, попробуйте вторую команду, есличт не возвращает код ошибки. Специфично для этого вопроса,

hg update || hg clone <source>

попробуем обновить; если это не удастся, он попытается клонировать. В случае сбоя клонирования вся строка завершается с кодом ошибки клона.

Я бы не хотел видеть никаких ошибок в выводе при успешном выполнении команды.

Почему при успешном выполнении команды возникают ошибки?

Вы можете убить вывод с помощью>/dev/null; Вы можете убить ошибки с помощью2>/dev/null; либо для каждого компонента в отдельности, либо заключив целую строку в скобки и поместив перенаправление после.

3
cd <directory> && hg update || hg clone <source>

потому что каталог не существует, то клон hg запускается с правильного уровня каталога.

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