Portál AbcLinuxu, 10. května 2025 07:27

Dotaz: Proč nefunguje tento skript?

15.6.2009 00:17 Tomáš | skóre: 7
Proč nefunguje tento skript?
Přečteno: 379×
Odpovědět | Admin
Udělal jsem tenhle skript pro prohledávání souborů, ale nějakým způsobem mi nefunguje getopts... ani na pouhý přepínač -h. Nevíte, kde mám chybu?

#!/bin/bash

number=0
jabber=""

while getopts hn:p: opt
do
case $opt in
h)
echo "Prepinace"
echo " -n JMENO : hledana osoba"
echo " -p TEXT : hledany text"
exit 0;;
n)
case $OPTARG in
#nejake moznosti
esac;;
p)
pattern=$OPTARG;;
esac
done ; shift `expr $OPTIND - 1`

cat /home/.../${number}/miranda.txt | grep $pattern
cat /home/.../${jabber}/miranda.txt | grep $pattern
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jan Zahornadsky avatar 15.6.2009 01:18 Jan Zahornadsky | skóre: 22 | blog: hans_blog
Rozbalit Rozbalit vše Re: Proč nefunguje tento skript?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já hlásím plnou funkčnost copy&pasted uvedeného...

Je to přesně ten skript který nefunguje? Jaký bash používáš? Není tam někde nějaká konstrukce, která způsobí, že se getopts pouští třeba v subshellu?
Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
15.6.2009 01:53 Tomáš | skóre: 7
Rozbalit Rozbalit vše Re: Proč nefunguje tento skript?
Aha... Tak to vypadá, že po skončení skriptu zůstanou proměnné deklarované a znovuspuštění už tam dělá nějakou chybu... Co s tím?
15.6.2009 02:00 Tomáš | skóre: 7
Rozbalit Rozbalit vše Re: Proč nefunguje tento skript?
Ještě změna. První pokus vždy vyjde. Při znovuspuštění jako kdyby getopts nefungovalo a cat bere hodnoty proměnných, které se nastaví na začátku.
Fuky avatar 15.6.2009 09:48 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Proč nefunguje tento skript?

  • a) vlož sem skript, který spouštíš (mluvíš o tom, že cat bere hodnoty proměných, které se nastaví na začátku, ovšem v cyklu pro zpracování argumentů z příkazové řádky nastavuješ pouze $pattern, takže to vypadá, že jsi skript mezi tím modifikoval a spouštíš jiný než jsi uvedl)
  • b) přidej na konec skriptu výpis proměných, které nastavuješ
  • c) spusť skript a pošli nám výstup z terminálu tj. příkaz pro spuštění včetně argumentů a výstup tj. hodnoty proměných

15.6.2009 10:39 Tomáš | skóre: 7
Rozbalit Rozbalit vše Re: Proč nefunguje tento skript?
Tak když jsem k tomu dneska ráno sednul, najednou všechno fungovalo. Nevím proč. Každopádně teď už všechno jde jak má.

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.