Consider:
gndlp@ubuntu:~$ test -x examples.desktop && echo $? gndlp@ubuntu:~$ test -x examples.desktop & echo $? [1] 2992 0
Why is Bash acting the way it is in this situation?
Is the test command simply not finishing and thus the echo
command isn't processed?
The apostrophe has three uses: 1) to form possessive nouns; 2) to show the omission of letters; and 3) to indicate plurals of letters, numbers, and symbols. Do not use apostrophes to form possessive pronouns (i.e. his/her computer) or noun plurals that are not possessives.
An apostrophe is a punctuation mark (') that appears as part of a word to show possession, to make a plural number or to indicate the omission of one or more letters.
The meaning of &&
and &
are intrinsically different.
&&
in Bash? In Bash—and many other programming languages—&&
means “AND”. And in command execution context like this, it means items to the left as well as right of &&
should be run in sequence in this case.&
in Bash? And a single &
means that the preceding commands—to the immediate left of the &
—should simply be run in the background.So looking at your example:
gndlp@ubuntu:~$ test -x examples.desktop && echo $? gndlp@ubuntu:~$ test -x examples.desktop & echo $? [1] 2992 0
The first command—as it is structured—actually does not return anything. But second command returns a [1] 2992
in which the 2992
refers to the process ID (PID) that is running in the background and the 0
is the output of the first command.
Since the second command is just running test -x examples.desktop
in the background it happens quite quickly, so the process ID is spawned and gone pretty immediately.
&
executes a command in the background, and will return 0 regardless of its status.
From the man page:
If a command is terminated by the control operator &, the shell executes the command in the background in a subshell. The shell does not wait for the command to finish, and the return status is 0. Commands separated by a ; are executed sequentially; the shell waits for each command to terminate in turn. The return status is the exit status of the last command executed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With