C program return codes and && bash symbol?

后端 未结 3 1460
清酒与你
清酒与你 2021-01-19 10:40

In bash, we can use the && operator to execute two commands. For example:

./foo && ./bar

Will first execute foo

3条回答
  •  攒了一身酷
    2021-01-19 11:17

    The C language convention that 0 is false and anything else true, is just that, a convention. Bash (and unix shells in general), use the opposite convention: 0 is true, anything else is false.

    $ if ( exit 0 ); then echo true; else echo false; fi
    true
    $ if ( exit 1 ); then echo true; else echo false; fi
    false
    $ if ( exit 2 ); then echo true; else echo false; fi
    false
    

    Because of this, the true command always exits with a status of 0, while false exits with a status of 1.

    $ true; echo $?
    0
    $ false; echo $?
    1
    

    This can be rather disconcerting for someone who's used to the C convention, but it makes a lot more sense in shell terms that truth=success=zero exit status, while false=failure=nonxero exit status.

提交回复
热议问题