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
之前,您需要包括——这意味着您需要回显两行。