IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Bash Šibenice

Aktivity
Avatar
dvorak.vit94
Člen
Avatar
dvorak.vit94:23.11.2014 12:59

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
Odpovídá na dvorak.vit94
Neaktivní uživatel:23.11.2014 18:46

Jak ten skript spouštíš?

Nahoru Odpovědět
23.11.2014 18:46
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
mkub:23.11.2014 22:24

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 Neaktivní uživatel
Libor Šimo (libcosenior):24.11.2014 5:55

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

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

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.