海湾合作委员会,做什么 - &&在命令行上意味着什么?

时间:2013-07-18 06:39:26

标签: bash gcc

我执行这样的命令

echo 'int main(){printf("%lu\n",sizeof(void));}' | gcc -xc  -w -&& ./a.out

可以得到结果:1。     但是我找不到什么 - &&意思是,即使在搜索手册和谷歌之后!我尝试在没有 - &&的情况下执行它。 option.it将是这样的错误:

./a.out:1: error: stray ‘\317’ in program
./a.out:1: error: stray ‘\372’ in program
./a.out:1: error: stray ‘\355’ in program
./a.out:1: error: stray ‘\376’ in program
./a.out:1: error: stray ‘\7’ in program
./a.out:1: error: stray ‘\1’ in program
./a.out:1: error: stray ‘\3’ in program
./a.out:1: error: stray ‘\200’ in program
./a.out:1: error: stray ‘\2’ in program
./a.out:1: error: stray ‘\16’ in program
./a.out:1: error: expected identifier or ‘(’ before numeric constant
./a.out:1: error: stray ‘\6’ in program
./a.out:1: error: stray ‘\205’ in program
./a.out:1: error: stray ‘\31’ in program
./a.out:1: error: stray ‘\1’ in program
./a.out:1: error: stray ‘\31’ in program
./a.out:1: error: stray ‘\2’ in program

...

谁知道这个选项意味着什么?

1 个答案:

答案 0 :(得分:13)

shell将{p> -&&解释为不是一个令牌,而是两个独立的令牌:-&&-标记对shell没有特殊含义,并作为参数传递给gcc,它将其解释为从标准输入读取源的指令。 &&是连接子句中两个命令的shell运算符:A && B仅在B时才会执行a.outA) }(echo ... | gcc ...)已成功完成。

使用gcc ... && ./a.out而不是更简单的gcc ...; ./a.out的目的是仅在编译成功时运行a.out,防止执行陈旧a.out。 / p>