我执行这样的命令
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
...
谁知道这个选项意味着什么?
答案 0 :(得分:13)
-&&
解释为不是一个令牌,而是两个独立的令牌:-
和&&
。 -
标记对shell没有特殊含义,并作为参数传递给gcc
,它将其解释为从标准输入读取源的指令。 &&
是连接和子句中两个命令的shell运算符:A && B
仅在B
时才会执行a.out
(A
) }(echo ... | gcc ...
)已成功完成。
使用gcc ... && ./a.out
而不是更简单的gcc ...; ./a.out
的目的是仅在编译成功时运行a.out
,防止执行陈旧a.out
。 / p>