Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: fotka kdy 03. 12. 2014, 13:50:20

Název: Linux bash dotaz k proměnné
Přispěvatel: fotka kdy 03. 12. 2014, 13:50:20
Dobrý den v tomto bash skript kód když definuji proměnnou vmrestartt, a hodnota té proměnné je komplexní skript (vzctl restart ...) který jako výstup má různé informace, znamená to, že definováním té proměnné bude skript korektně spuštěn, vykonán?

vmrestartt=$(vzctl restart $ctid)
if [[ "$vmrestartt" == *"exited with status 7"* ]];then
vzctl chkpnt $ctid --kill
sleep 10
vzctl --verbose restart $ctid
fi
Název: Re:Linux bash dotaz k proměnné
Přispěvatel: Dzavy kdy 03. 12. 2014, 14:06:04
Boze to je zase prasarna. Proc nepouzit normalne $? ?

http://www.cyberciti.biz/faq/shell-how-to-determine-the-exit-status-of-linux-and-unix-command/
Název: Re:Linux bash dotaz k proměnné
Přispěvatel: fotka kdy 03. 12. 2014, 14:10:44
já myslím že výstup toho vzctl skriptu nemá exit status 1 , otázka trvá..
Název: Re:Linux bash dotaz k proměnné
Přispěvatel: pet kdy 03. 12. 2014, 14:12:52
1. řádek toho skriptu spustí "vzctl restart $ctid" a výstup uloží do "vmrestartt" jako text.
Název: Re:Linux bash dotaz k proměnné
Přispěvatel: poustevnik kdy 03. 12. 2014, 14:13:20
Citace od: fotka kdy 03. 12. 2014, 13:50:20
Dobrý den v tomto bash skript kód když definuji proměnnou vmrestartt, a hodnota té proměnné je komplexní skript (vzctl restart ...) který jako výstup má různé informace, znamená to, že definováním té proměnné bude skript korektně spuštěn, vykonán?
ta řádka "vzctl restart..." není spuštěna "definováním té proměnné", ale díky konstrukci "$()", která spustí to, co je v závorkách a standardní výstup dá do té řádky (tedy v našem případě přiřadí do proměnné). googli "command substitution".
Název: Re:Linux bash dotaz k proměnné
Přispěvatel: Dzavy kdy 03. 12. 2014, 14:14:04
Citace od: fotka kdy 03. 12. 2014, 14:10:44
já myslím že výstup toho vzctl skriptu nemá exit status 1 , otázka trvá..

Tak kdyz vypise, ze skoncil s exit kodem 7, tak by jeden cekal, ze v $? bude 7...
Název: Re:Linux bash dotaz k proměnné
Přispěvatel: fotka kdy 03. 12. 2014, 14:16:17
děkuji, super  :)
Název: Re:Linux bash dotaz k proměnné
Přispěvatel: jrn kdy 03. 12. 2014, 21:36:47
A nebo:

vzctl restart $ctid 2>&1 |grep "status 7" >/dev/null && (
  vzctl chkpnt $ctid --kill
  sleep 10
  vzctl --verbose restart $ctid
)

ne tak narocne na pamet (zpracovani radek po radku a bez subshellu a persistentni promenne) a hlavne jistota, ze se porovnava skutecne vystup. :) to clovek oceni, kdyz je kod vice zamotanej a dejou se divne veci :)

Obecne doporucuji porovnavat co nejkratsi obhajitelny text.  *hledam* muze byt obcas peknej macek.