1) napady: - sort a porovnanie - pouzitie case $vzor in - odstranenie slov, kontrola toho co ostalo - vygrepovanie slov (viacero grep-ov pospajanych pipe-ami) #!/bin/bash text=`printf "needs updating Windows your"` while read riadok; do porovnavane=`echo $riadok | tr ' ' '\n' | sort -df | tr '\n' ' '` if [ "$porovnavane" == "$text" ]; then : else echo $riadok fi done --- 2) napady: - cut "$subor" -d "$deliaciznak" -f -"$posun" > temp - while + neco (sed/cut) --- #!/bin/bash subor=$1 cislo=1 znak=' ' if [ $# = 0 -o $# -ge 4 ] then echo 'Spatny pocet parametru' exit fi if [ $# -ge 2 ]; then cislo=$2 fi if [ $# -eq 3 ]; then znak=$3 fi cut "$subor" -d "$znak" -f -"$cislo" > temp2 cislo=$(($cislo + 1)) cut "$subor" -d "$znak" -f "$cislo"- > temp1 paste -d "$znak" temp1 temp2 --- caste chyby: - problem s poslednym riadkom (ak nie je odriadkovane) - ale tazko sa riesi while-om --- tip: - osetrujte vzdy pocet parametrov - osetrujte hranicne hodnoty (napr. 0) if [ $# = 0 ] then echo 'Spatny pocet parametru' fi - ak vytvarate docasne subory, zmazte ich po vykonani skriptu - pouzivajte odsadzovanie (indent) pre prehladnost - v skripte je to ok ;) --- Xtra men: pekne pouzitie case v 1) (Tereza K.) #!/bin/sh vzor=" your Windows needs updating " while read a b c d do ok=0 case $vzor in *" $a "*)ok=`expr $ok + 1`;; esac case $vzor in *" $b "*)ok=`expr $ok + 1`;; esac case $vzor in *" $c "*)ok=`expr $ok + 1`;; esac case $vzor in *" $d "*)ok=`expr $ok + 1`;; esac if [ $ok != 4 ] then echo "$a $b $c $d" fi done