bash shell - riadok ako vstup do funkcie

Sekcia: Programovanie 05.06.2009 | 14:53
Avatar mravciar   Používateľ
ahojte,
skusam vytvorit shell skript, ktory vypise najdlhsie a najkratsie slovo v subore (ktory je zadany ako parameter),
moje riesenie:
script.sh:
min = "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
max ="";

subor=$1 //meno suboru bude ako parameter
cat ${subor} | tr " " "/n" >> pom // vytvorim si pomocny subor, kde budem mat kazde slovo v jednom riadku
//moja funkcia, ktora porovna vstup s najdlshim a najkratsim slovom
funkcia(){
pom=$1
aa=`expr length ${pom}`
bb=`expr length ${min}`
cc=`expr length ${max}`

if `expr ${aa} < ${bb}` then min=${pom}
if `expr ${aa} > ${bb}` then max=${pom}
}

no a moj problem,je ze neviem prist na to,ako poslat kazdy riadok do to tej funkcie


Prosim vas,vedel mi mi s tymto niekto poradit?respektive je moj postup riesenia ulohy spravny?
Dakujem
    • Re: bash shell - riadok ako vstup do funkcie 05.06.2009 | 17:19
      Avatar Zefram Cochrane MS Windows Vista Ultimate 64bi  Používateľ
      cat "$1" | (while read r; do
      echo "Riadok je $r"
      done)

      Alebo

      for r in `cat "$1"`; do
      echo "Riadok je $r"
      done
    • Re: bash shell - riadok ako vstup do funkcie 05.06.2009 | 17:33
      Avatar Zefram Cochrane MS Windows Vista Ultimate 64bi  Používateľ
      #!/bin/bash
      T=`mktemp`
      cat "$1" | tr ' ' '\n' | grep -v ^$ | sort -u | \
        (while read a; do echo `expr length "$a" 2>/dev/null` $a; done) | sort -nr > $T
      echo "Najdlhsie: "`head -1 $T`
      echo "Najkratsie: "`tail -1 $T`
      rm $T
      
      # ./aaa.sh subor.txt
      Najdlhsie: 12 nadlahcovane
      Najkratsie: 2 do
      
      • Re: bash shell - riadok ako vstup do funkcie 08.06.2009 | 06:06
        Avatar mravciar   Používateľ
        Dakujem:)