Avatar
dvorak.vit94
Člen
Avatar
dvorak.vit94:

Dobrý den,
již několik dní se snažím udělat skript v bashy. Tento skript by měl fungovat jako všem známá Šibenice.
Však stále mě hází chybu v ifu.
V příloze zasílám obrázky kódu i chyby, ale také zdrojový kód pro ty co by se chtěli na všechno kouknout.

Moc děkuji za pomoc.

#!/bin/bash
KresliObrazovku ()
{
  clear
  echo "______SIBENICE_______"
  echo
  echo "Hadejte slovo: "
  echo
  echo $Uhadnute
  echo
  KoncovaPozice=`expr $Chyb \* 12`
  KoncovaPozice=`expr $KoncovaPozice + 12`
  echo
  echo Pocet chyb: $Chyb
}
clear
if test -s data.txt
   then
     DelkaDBaze=`wc -l data.txt | cut -c1-7`
     Nahoda=`expr $RANDOM % $DelkaDBaze`
     Nahoda=`expr $Nahoda + 1`
     Text=`head -n${Nahoda} data.txt`
   else
     echo "Slovo v databázy neexistu, kontaktujte výrobce"
fi
echo
echo -n "Inicializace promennych: ["
Chyb=0
Cheat=off
PuvText=$Text
Delka=`expr length $Text`
TheX=$Delka
Uhadnute=""
while test $TheX -gt 0
  do
    Uhadnute=" ${Uhadnute}_"
    TheX=`expr $TheX - 1`
    echo -n "."
  done
Konec=ne
echo "] hotovo."

while test $Konec = ne
  do
KresliObrazovku
echo -n "Hadejte znak: "

ChJeOk=ne
while test $ChJeOk = ne
  do
    read retezec
    DelkaCh=`expr length "$retezec"`
    if test $DelkaCh = 1
      then
        ChJeOk=ano
      else
 echo -n "Zadejte jen JEDEN znak: "
    fi
done

echo -n "Pracuji ["
TheX=$Delka
if test `expr index $Text $retezec` = 0
  then
    if test $Cheat != on
      then
        Chyb=`expr $Chyb + 1`
    fi
  else
    while test $TheX -gt 0
      do
        Pos=`expr index $Text $retezec`
        if test $Pos != 0
          then
            Pos2=`expr $Pos - 1`
            Pos3=`expr $Pos + 1`
            NewText=`expr substr $Text 1 $Pos2`
            NewText="${NewText}-"
            NewText="${NewText}`expr substr $Text $Pos3 $Delka`"
            Text=$NewText
            NewUhadnute=`expr substr $Uhadnute 1 $Pos2`
            NewUhadnute="${NewUhadnute}${retezec}"
            NewUhadnute="${NewUhadnute}`expr substr $Uhadnute $Pos3 $Delka`"
            Uhadnute=$NewUhadnute
        fi
        TheX=`expr $TheX - 1`
        echo -n "."
      done
fi
echo "]"

if test $Chyb -ge 12
  then
    Konec=ano
  else
    if test $Uhadnute = $PuvText
      then
        Konec=ano
      else
        Konec=ne
    fi
fi
done

KresliObrazovku
echo
if test $Chyb -ge 10
  then
    echo "Prohral(a) jste!"
  else
    echo "Vyhral(a) jste! Hura."
fi
echo "Zkuste to znovu".
 
Odpovědět 23.11.2014 12:59
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na dvorak.vit94
Filip Šohajek:

Jak ten skript spouštíš?

 
Nahoru Odpovědět 23.11.2014 18:46
Avatar
mkub
Redaktor
Avatar
Odpovídá na Filip Šohajek
mkub:

nemyslim sim ze by bola chyba v jeho spustani, ale skor je v tom skripte chyba...
a ked ma nastavene pravo execute a spusta ho nazvom, vzdy sa spusti s bash-om, riadok #!/bin/bash indikuje, zedani skript je skript bash-u a ho spusti (skor si myslim, ze sa forkne v RAM)

 
Nahoru Odpovědět 23.11.2014 22:24
Avatar
Odpovídá na Filip Šohajek
Libor Šimo (libcosenior):

script nazvyš napr. test.sh a s pustíš ako všetko v konzole,./nazov

Nahoru Odpovědět  +1 24.11.2014 5:55
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
dvorak.vit94
Člen
Avatar
dvorak.vit94:

Vím jak se spouští skript.. :) A dále jak tento problém jde teda vyřešit? :)

 
Nahoru Odpovědět 24.11.2014 9:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.