Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: fotka 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
-
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/
-
já myslím že výstup toho vzctl skriptu nemá exit status 1 , otázka trvá..
-
1. řádek toho skriptu spustí "vzctl restart $ctid" a výstup uloží do "vmrestartt" jako text.
-
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".
-
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...
-
děkuji, super :)
-
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.