Я работаю над сценарием Bash, который я хотел бы работать для нескольких типов VCS. Я подумываю проверить, является ли каталог репозиторием для системы, выполнив типичную команду info и проверив код возврата, успех или ошибку. В псевдокоде:
if a svn command succeded;
Then run svn commands
elif a darcs command succeded;
Then run darcs commands
elif a mercurial command succeded;
then run hg commands
else
something else
fi
Я могу запустить команду, например,
darcs show repo
и использовать, $?
чтобы получить код возврата.
У меня вопрос: есть ли удобный способ запустить и вернуть код возврата в одной строке? например
if [ 0 -eq `darcs show repo`$? ];
Или я должен определить функцию?
Дополнительным требованием является печать как stderr, так и stdout.
источник
Как уже упоминали другие,
if command
проверяет,command
удастся ли . На самом деле[ … ]
это обычная команда, которая может быть использована внеif
илиwhile
условно, хотя это редко встречается.Однако для этого приложения я бы проверил наличие характерных каталогов. Это будет правильно в более сложных случаях. Версия bash / ksh / zsh / dash (не проверена):
источник
Ну, это не очень красиво, но это один из способов сделать это встроенным:
По определению, если тестирует код завершения команды, вам не нужно делать явное сравнение, если только вы не хотите большего, чем успех или неудача. Вероятно, есть более элегантный способ сделать это.
источник
Другой краткий вариант будет:
источник