Bash GCC,什么是-&&;你是说在命令行上?

Bash GCC,什么是-&&;你是说在命令行上?,bash,gcc,Bash,Gcc,我执行这样的命令 echo 'int main(){printf("%lu\n",sizeof(void));}' | gcc -xc -w -&& ./a.out 并得出结论:1。 但是,即使在搜索了手册页和google!之后,我也无法找到-&&的含义!。我尝试在不使用-&&选项的情况下执行它。将出现如下错误: ./a.out:1: error: stray ‘\317’ in program ./a.out:1: error: stray ‘\372’ in progra

我执行这样的命令

echo 'int main(){printf("%lu\n",sizeof(void));}' | gcc -xc  -w -&& ./a.out
并得出结论:1。 但是,即使在搜索了手册页和google!之后,我也无法找到-&&的含义!。我尝试在不使用-&&选项的情况下执行它。将出现如下错误:

./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


谁知道这个选项的意思?

-&&
被shell解释为两个独立的令牌,而不是单个令牌:
-
&&
-
标记对shell没有特殊意义,作为参数传递给
gcc
,后者将其解释为从标准输入读取源代码的指令
&
是连接and子句中两个命令的shell运算符:
A&&B
只有在
A
echo…| gcc…
)成功完成后才会执行
B
A.out


使用
gcc…&&&/a、 out
而不是更简单的
gcc/a、 out
仅在编译成功时才运行
a.out
,以防止执行过时的
a.out

-&
被shell解释为两个单独的令牌,而不是单个令牌:
-
&
-
标记对shell没有特殊意义,作为参数传递给
gcc
,后者将其解释为从标准输入读取源代码的指令
&
是连接and子句中两个命令的shell运算符:
A&&B
只有在
A
echo…| gcc…
)成功完成后才会执行
B
A.out


使用
gcc…&&&/a、 out
而不是更简单的
gcc/a、 out
仅在编译成功的情况下运行
a.out
,防止执行过时的
a.out

这似乎很合理。您能告诉我您是如何知道这一点的,而我在任何地方都找不到它吗?@user1242027
&
操作符在shell的手册中有说明(“shell语法”下的
manbash
)。这也是您在阅读其他人的shell脚本时经常遇到的问题。
-
命令行参数的含义是“从标准输入读取”是一个长期的Unix传统,您可以使用各种程序来学习它。这似乎很合理。您能告诉我您是如何知道这一点的,而我在任何地方都找不到它吗?@user1242027
&
操作符记录在您的shell手册中(“shell语法”下的
man bash
)。这也是您在阅读其他人的shell脚本时经常遇到的问题。“从标准输入读取”含义中的
-
命令行参数是一个长期的Unix传统,您可以通过使用各种程序来了解它。关于您的代码的一些注释:
sizeof(void)
是非标准的;由于特定于gcc的扩展,它会产生1。打印
大小的正确格式是
%zu
。在调用
printf
之前,您需要
#包括
,这意味着您需要回显两行。有关代码的一些注释:
sizeof(void)
是非标准的;由于特定于gcc的扩展,它会产生1。打印
大小\u t
值的正确格式是
%zu
。在调用
printf
之前,您需要
包括
——这意味着您需要回显两行。