Portál AbcLinuxu, 12. května 2025 08:36

Dotaz: Bash: if, elif, fi

David Watzke avatar 28.11.2005 22:18 David Watzke | skóre: 74 | blog: Blog... | Praha
Bash: if, elif, fi
Přečteno: 905×
Odpovědět | Admin
Ahoj. Pokouším se napsat jakýsi encoder všeho do všeho. :-) NCoda se jmenuje. Můj první script, ve kterém používám svoje oblíbené if a elif. :-) No a protože je to poprvé, tak samozřejmě (alespoň u mě) špatně. Hodí mi chybu:
/home/david/Apps/bin/ncoda: line 152: syntax error:
unexpected end of file
Z toho soudím, že tam něco chybí. No, doufám, že mi poradíte. Tady to je. Prosím neřvete na mě ohledně toho, že by to šlo celý napsat jinak - zatím je to jen pro mě a plánuju to radikálně vylepšit. Ale návrhy na zlepšení samo uvítám. :-) Předem díky.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.11.2005 22:33 judas | skóre: 7 | Bratislava
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Odpovědět | | Sbalit | Link | Blokovat | Admin
# MPC >> WAV

if namiesto elif
David Watzke avatar 28.11.2005 22:36 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Jej, takovou kravinu udělám. Prohazoval jsem to, aby to bylo jakž takž podle abecedy a na tohle zapomněl. Hanba mi!
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.11.2005 22:38 judas | skóre: 7 | Bratislava
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
...plus premenne v teste vzdy uzatvaraj do uvodzoviek. inak sa ti [ $1 == help ] expandne na [ == help ] pri spusteni bez parametrov a na tom ti to skape.

no, a posledny elif zamen za else, nech sa vypise help aj pri zadani bez parametrov.
David Watzke avatar 28.11.2005 22:45 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Děkuju, zrovna jsem se na to chtěl zeptat. Zázrak! :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 28.11.2005 22:49 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Hm, poslední část mám:
elif [ $1 == "wma2wav" ]; then
 for F in *.[wW][mM][aA]
  do
   mplayer "$F" -ao pcm
   mv audiodump.wav "${F%%.*}.wav"
  done

# Nápověda etc.

else
 echo "..."
fi
exit 0
a když nezadám parametr hodí to chyby:
/home/david/Apps/bin/ncoda: line 5: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 18: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 31: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 39: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 52: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 65: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 73: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 83: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 88: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 96: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 104: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 113: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 123: [: ==: unary operator expected
/home/david/Apps/bin/ncoda: line 133: [: ==: unary operator expected
a až nakonec ten help.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.11.2005 22:58 judas | skóre: 7 | Bratislava
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
do uvodzoviek si mal vlozit premennu $1
David Watzke avatar 28.11.2005 23:06 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Aha. Vyměnil jsem ten soubor na netu za pořádnej v pořádku. :-) Už snad nic nepodělám. :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 29.11.2005 00:29 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když už jsme u toho, jak udělat, aby $1 == deps jelo i jako --deps abych to nemusel pokaždý psát znova? {deps,--deps} mi nejde. :/
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
29.11.2005 01:18 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Jestli jsem něco nepřehlédl, mohlo by fungovat
  if [ "${a#--}" = deps ]; then ...
29.11.2005 01:31 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash: if, elif, fi
Oprava:
  if [ "${1#--}" = deps ]; then ...
29.11.2005 07:30 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše case
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je nějaký důvod, proč nepoužít case?
case $1 in
#*)      echo "Bla bla bla"
         # pripadne kecy na zacatku
mp32ogg) # prikazy pro MP3 >> OGG
         ;; # stopnout vyhodnocovani
mp32mpc) # ...
         ;;
# atd.
*)       echo Usage: # atd.
esac
Jinak jsem si nedávno psal skriptík pro přihlašování do sítě VUT, který mi vyhazoval furt tu samou hlášku - chyběla tam uzavírací složená závorka.
oVirt | SPICE
David Watzke avatar 29.11.2005 15:31 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: case
Jojo, máš pravdu. Chtěl jsem se pořádně naučit if. Můj první script, kterej je delší jak 10 řádků. Sice je to furt to samý dokola, ale to je jedno. :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.