Я использую Bash
конкретно, но я думаю, что большинство снарядов ведут себя одинаково.Как работает && в оболочке?
Я часто
hg pull && hg update --clean
Но это только мне пришло в голову, если hg pull
возвращается 0
на успех, почему это выполнить команду hg up
?
Как правило, работа оператора &&
заключается в том, что он выполнит только следующий аргумент, если предыдущий был правдивым. Является ли 0
правдой в Bash, что ли?
Это произошло, потому что я пытался делать эквивалент в Python, но я должен был написать это:
call(['hg','pull']) or call(['hg','update','--clean'])
0 считается успешным кодом возврата, потому что есть как правило, только один способ для успеха команды, но многие способы (соответствующие многим доступным ненулевым значениям) для комманды и потерпеть неудачу. В оболочке это помогает думать не с точки зрения «истинного» или «ложного», а с точки зрения «успеха» или «неудачи». – chepner
Duplicate of [this previous question] (http://stackoverflow.com/questions/11714341/c-program-return-codes-and-bash-symbol) –
@chepner: Я понимаю, почему 0 считается успешным, я просто не знаю 't понять, как '&&' "знает", что если он также может использоваться в контексте программирования, где 0 - false, а все остальное - true. – mpen