Portál AbcLinuxu, 25. dubna 2024 23:36


Dotaz: nechtěné ukončení skriptu

11.3.2004 15:10 Michal Kováč | skóre: 12 | Praha
nechtěné ukončení skriptu
Přečteno: 80×
Odpovědět | Admin
Píšu si skript na odeslání delší SMS na eurotel pomocí smssend. Mám problém, že onen while cyklus dole se hned po prvním průchodu ukončí. Zřejmě to způsobuje smssend, protože když řádku s ním odeberu, funguje to. Co s tím?
#!/bin/sh
if [ "$1" = "--help" ]
then
   smssend eurotel.sms
else
   cislor=0
   zpravy=`echo "$3" | oi | fmt -w 55`
   pocetzpr=`echo "$zpravy" | wc -l`
   echo "$zpravy" | while read line
   do
      if [ 1 != "$pocetzpr" ]
      then
         cislor=`expr $cislor + 1`
              zprava=${cislor}/${pocetzpr}:$line
      else
         zprava=$line
      fi
         echo smssend eurotel.sms "'${1}'" "'${2}'" 0 "'${zprava}'"
         smssend eurotel.sms "$1" "$2" 0 "$zprava"
   done
fi
Poznámky: oi je můj skript na odstranění interpunkce. Vím, že takto odešlu maximálně 9 SMS (kvůli té velikosti 55).
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.3.2004 15:35 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše snechtěné ukončení skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
neukoncuje smssend nejak drasticky prubeh skriptu? zkus to spustit v subshellu - proste to dat do zavorek
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
11.3.2004 17:02 Michal Kováč | skóre: 12 | Praha
Rozbalit Rozbalit vše nechtěné ukončení skriptu
když to tam dám jako ( smssend ... ) , tak to nepomůže, stále se to ukončuje.
11.3.2004 17:50 Michal Kováč | skóre: 12 | Praha
Rozbalit Rozbalit vše nechtěné ukončení skriptu
Tak už jsem na to přišel - smssend přečte všechen vstup. Nevím, proč to dělá, když ho nepoužije, ale budiž.

Tedy řešení je například:

smssend ... < /dev/null
11.3.2004 18:23 Michal Kováč | skóre: 12 | Praha
Rozbalit Rozbalit vše nechtěné ukončení skriptu
Ještě pro případné zájemce onen výsledný skript:
#!/bin/sh
if [ "$1" = "--help" ]
then
        smssend eurotel.sms
else
        cislor=0
        zpravy=`echo "$3" | oi | fmt -w 56`
        pocetzpr=`echo "$zpravy" | wc -l`
        if [ $pocetzpr -gt 9 ]
        then
                echo "trochu zvetsim"
                zpravy=`echo "$3" | oi | fmt -w 54`
                pocetzpr=`echo "$zpravy" | wc -l`
        fi
        echo "$zpravy" | while read line
        do
                if [ 1 != "$pocetzpr" ]
                then
                        cislor=`expr $cislor + 1`
                        zprava=${cislor}/${pocetzpr}:$line
                else
                        zprava=$line
                fi
                echo smssend eurotel.sms "'${1}'" "'${2}'" 0 "'${zprava}'"
                vysledek=`smssend eurotel.sms "${1}" "${2}" 0 "${zprava}" < /dev/null`
                while [ "$vysledek" = "SmsSend Error : Confirmation code doesn't match the requested one. Sorry, OCR program isn't perfect. Try it one more
time." ]
                do
                        echo "OCR zklamal, zkusim znovu..."
                        vysledek=`smssend eurotel.sms "${1}" "${2}" 0 "${zprava}" < /dev/null`
                done
                echo "${vysledek}"
        done
fi
Kdo by chtěl ještě onen skript oi na odebrání interpunkce(možná je na to něco lepšího), který je používán predcházejícím skriptem:
prikaz='sed'
for nahrazeni in á/a č/c ď/d é/e ě/e í/i ň/n ó/o ř/r š/s ť/t ů/u ú/u ý/y ž/z Á/A Č/C Ď/D É/E Ě/E Í/I Ň/N Ó/O Ř/R Š/S Ť/T Ů/U Ú/U Ý/Y Ž/Z ;do
        prikaz="$prikaz -e 's/'${nahrazeni}'/g'"
done
eval $prikaz
11.3.2004 18:32 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše sed vs. tr
znáš tr? a znáš y/// v sedu? doporučuji nastudovat ;-) můžeš si tím ušetřit asi 19 spuštění sedu...
11.3.2004 18:47 Michal Kováč | skóre: 12 | Praha
Rozbalit Rozbalit vše sed vs. tr
no jo, máš pravdu, s tr by to bylo lepší :-) (a to jsem ho znal, jen uvažovat). S y/// je to u mě to samé. Nicméně, až na to zbytečné předzpracování myslím, že to poběží stejně rychle (sed spouštím jen jednou).

Dík
11.3.2004 19:28 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše sed vs. tr
Jo, sorry, já jak jsem uviděl ten dlouhý seznam samostatných nahrazení, tak už jsem to moc dál nestudoval... :-)

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.