Linux bash dotaz k proměnné

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Linux bash dotaz k proměnné
« 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?

Kód: [Vybrat]
vmrestartt=$(vzctl restart $ctid)
if [[ "$vmrestartt" == *"exited with status 7"* ]];then
vzctl chkpnt $ctid --kill
sleep 10
vzctl --verbose restart $ctid
fi
Linux nováček - CeskeForum.com


Dzavy

Re:Linux bash dotaz k proměnné
« Odpověď #1 kdy: 03. 12. 2014, 14:06:04 »

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re:Linux bash dotaz k proměnné
« Odpověď #2 kdy: 03. 12. 2014, 14:10:44 »
já myslím že výstup toho vzctl skriptu nemá exit status 1 , otázka trvá..
Linux nováček - CeskeForum.com

pet

Re:Linux bash dotaz k proměnné
« Odpověď #3 kdy: 03. 12. 2014, 14:12:52 »
1. řádek toho skriptu spustí "vzctl restart $ctid" a výstup uloží do "vmrestartt" jako text.

poustevnik

Re:Linux bash dotaz k proměnné
« Odpověď #4 kdy: 03. 12. 2014, 14:13: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".


Dzavy

Re:Linux bash dotaz k proměnné
« Odpověď #5 kdy: 03. 12. 2014, 14:14:04 »
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...

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re:Linux bash dotaz k proměnné
« Odpověď #6 kdy: 03. 12. 2014, 14:16:17 »
děkuji, super  :)
Linux nováček - CeskeForum.com

jrn

Re:Linux bash dotaz k proměnné
« Odpověď #7 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.