GNU/Linux >> Znalost Linux >  >> Linux

Co znamená echo $? dělat?

Od man bash :

$? Rozbalí se na stav ukončení naposledy provedeného potrubí v popředí.

echo $? vrátí návratový stav posledního příkazu. Máte 127 to je stav ukončení posledního provedeného příkazu ukončeného s nějakou chybou (s největší pravděpodobností). Příkazy po úspěšném dokončení se ukončí se stavem ukončení 0 (s největší pravděpodobností). Poslední příkaz dal výstup 0 od echo $v na předchozím řádku dokončeno bez chyby.

Pokud provedete příkazy

v=4
echo $v
echo $?

Získáte výstup jako:

4 (from echo $v)
0 (from echo $?)

Zkuste také:

true
echo $?

Získáte 0 .

false
echo $?

Získáte 1 .

true příkaz nedělá nic, pouze se ukončí se stavovým kódem 0; a false příkaz také nedělá nic, pouze se ukončí se stavovým kódem indikujícím selhání (tj. se stavovým kódem 1 ).


$? je užitečný v shellscriptech jako způsob, jak se rozhodnout, co dělat v závislosti na tom, jak fungoval předchozí příkaz (kontrola stavu ukončení). Můžeme očekávat, že stav ukončení je 0 když předchozí příkaz fungoval (úspěšně dokončen), jinak nenulová číselná hodnota.

Příklad ukázky:

#!/bin/bash

patience=3

read -t "$patience" -p "Press 'Enter' if you run Unix or Linux, otherwise press 'ctrl+d' "

status="$?"

if [[ $status -eq 0 ]]
then
 echo "That's great :-)"
elif [[ $status -eq 1 ]]
then
 echo "(exit status=$status)
You are welcome to try Unix or Linux :-)"
else
 echo "(exit status=$status)
You did not answer within $patience seconds. Anyway :-)"
fi
echo "'Unix & Linux' is a question/answer web site for
Unix and Linux operating systems"

Můžete se zeptat, jak spustit bash shellscript bez Unixu nebo Linuxu;-)


Linux
  1. Co znamená „–“ (dvojitá pomlčka)?

  2. Co dělá . ~/.bashrc Příkaz Udělat??

  3. Co dělá poll() s časovým limitem 0?

  1. Co dělá „lc_all=c“?

  2. Co znamená 'cd -'?

  3. Co dělá 'bash -c'?

  1. Co dělá ?

  2. Co dělá Exec 3?

  3. Co dělá Echo $? Dělat??