考虑:
gndlp@ubuntu:~$ test -x examples.desktop && echo $? gndlp@ubuntu:~$ test -x examples.desktop & echo $? [1] 2992 0
在这种情况下,为什么Bash会表现得如此?
测试命令是否只是没有完成而导致echo命令没有得到处理?
echo
的意义&&和&本质上是不同的。
&&
&
所以看你的例子:
实际上,第一个命令实际上并不返回任何内容。但是第二个命令返回一个[1] 2992,其中2992引用了在后台运行的进程ID(PID),并且0是第一个命令的输出。
[1] 2992
2992
0
由于第二个命令只是test -x examples.desktop在后台运行,因此它很快发生,因此产生了进程ID,并立即消失了。
test -x examples.desktop