Как уже говорили другие, используйте &&
. Например:
$ make && ./a.out
Есть две вещи, которые делают эту работу; Во-первых, в UNIX существует соглашение, согласно которому все, что завершается успешно, возвращает 0 (включая программы на Си). Есть старая шутка, которая помогает вам вспомнить: «Римская империя пала, потому что у римлян не было нуля, чтобы успешно завершить свои программы на Си».
Во-вторых, &&
- это логическая версия "and" для короткого замыкания. Таким образом, он будет оценивать выражение с левой стороны и ТОЛЬКО, если это 0
, он будет оценивать выражение с правой стороны. В этом также разница между операторами Java &&
(короткое замыкание) и &
(всегда оцениваются оба операнда). Многие императивные языки содержат оба вида операторов, в случае, если в правом операнде булева выражения есть побочные эффекты (например, ввод-вывод, обновление переменных), и в этом случае вы определенно хотите оценить оба операнда. Некоторые люди, однако, сказали бы, что вставлять побочные эффекты таким способом - плохой стиль.