GNU/Linux >> Znalost Linux >  >> Linux

'&&' vs. '&' s příkazem 'test' v Bash

& provede příkaz na pozadí a vrátí 0 bez ohledu na jeho stav.

Z manuálové stránky:

Pokud je příkaz ukončen řídicím operátorem &, shell provede příkaz na pozadí v dílčím shellu. Shell nečeká na dokončení příkazu a návratový stav je 0. Příkazy oddělené; jsou prováděny postupně; shell čeká na ukončení každého příkazu v pořadí. Návratový stav je stav ukončení posledního provedeného příkazu.


Podívejte se, jaké jsou vaše příkazy:

test -x examples.desktop  && echo $?

To znamená zkontrolovat, zda examples.desktop je spustitelný a pokud je, spusťte echo $? .

test -x examples.desktop  & echo $?

znamená zkontrolovat, zda examples.desktop je spustitelný na "pozadí". Poté spusťte echo $? .


Význam && a & jsou bytostně odlišné.

  • Co je && v Bash? V Bash – a mnoha dalších programovacích jazycích – && znamená „A“. A v kontextu provádění příkazů, jako je tento, to znamená položky nalevo i napravo od && by v tomto případě měly být spuštěny postupně.
  • Co je & v Bash? A jeden & znamená, že předchozí příkazy – bezprostředně vlevo od & —by měl být jednoduše spuštěn na pozadí.

Takže když se podíváme na váš příklad:

[email protected]:~$ test -x examples.desktop  && echo $?
[email protected]:~$ test -x examples.desktop  & echo $?
[1] 2992
0

První příkaz – jak je strukturován – ve skutečnosti nic nevrací. Ale druhý příkaz vrátí [1] 2992 ve kterém 2992 odkazuje na ID procesu (PID), který běží na pozadí, a 0 je výstupem prvního příkazu.

Protože druhý příkaz právě běží test -x examples.desktop na pozadí se to děje docela rychle, takže ID procesu se vytvoří a zmizí docela okamžitě.


Linux
  1. Příkaz Nohup s příklady

  2. JQ Command v Linuxu s příklady

  3. Výukový program Ultimate Bash Array s 15 příklady

  1. Bash wait Příkaz s příklady

  2. wc Linux Command s příklady

  3. Bash HereDoc výukový program s příklady

  1. Jak používat příkaz spánku Linux s příklady

  2. Jak používat příkaz who v Linuxu s příklady

  3. Linux ip příkaz s příklady