Nowe posty

Autor Wątek: [BASH]lata-problem z expr  (Przeczytany 2882 razy)

seba2122

  • Gość
[BASH]lata-problem z expr
« dnia: 2009-02-17, 11:35:15 »
Witam. Mam problem z expr w tym kodzie:
#!/bin/bash
c
rok = `date +"%Y"`
echo "Witam W programie Lata!";
read -p "Prosze wpisac swoj wiek: " wiek
echo "Wiec masz $wiek lat..."
read -t 4
echo "za `expr 18 - $wiek` lata bedziesz miec 18 lat";
read -t 4
echo "Urodziles sie `expr $rok - $wiek` Roku";
read -t 4
echo "Zdechniesz Za..."
read -t 2
echo "...Juz!"
read -t 1
c
Od razu mówie że "c" to mój skrót do "clear" :)
Wiec... program po wpisaniu wieku
oblicza ile mu zostalo do osiemnastki ^^ (jesli wiek jest wiekszy od 18 to wywala liczbe ujemna :P, jeszce nad tym popracuje)

a kolejna opcja robi problemy....

na poczatku jest zmienna "rok" przechowujaca polecenie `date +"%Y"` czyli ta zmienna powinna wyswietlic rok(2009)
i... jest echo "Urodziles sie `expr $rok - $wiek` Roku";
i tutaj wywala mi błąd "Błąd składni" i w nowej linijce wyswietla sie tylko "Urodziles sie      
    roku"

prosze o pomoc z tym blędem.

jk33

  • Gość
[BASH]lata-problem z expr
« Odpowiedź #1 dnia: 2009-02-17, 12:16:45 »
W debugowaniu skryptów może Ci pomóc parametr -x basha.
Więc:
#!/bin/bash -x
i zobacz co się dzieje.

Inna sprawa, że w bashu nie trzeba korzystać z expr. Można lepiej.
http://tldp.org/LDP/abs/html/

pozdrawiam, Janek

seba2122

  • Gość
[BASH]lata-problem z expr
« Odpowiedź #2 dnia: 2009-02-17, 13:14:28 »
Oto co mi wyskoczylo po dodaniu -x
++ date +%Y
+ rok = 2009
/bin/lata: line 3: rok: polecenie nieodnalezione
+ echo 'Witam W programie Lata!'
Witam W programie Lata!
+ read -p 'Prosze wpisac swoj wiek: ' wiek
Prosze wpisac swoj wiek: 13
+ echo 'Wiec masz 13 lat...'
Wiec masz 13 lat...
+ read -t 4
++ expr 18 - 13
+ echo 'za 5 lata bedziesz miec 18 lat'
za 5 lata bedziesz miec 18 lat
+ read -t 4
++ expr - 13
expr: błąd składni
+ echo 'Urodziles sie  Roku'
Urodziles sie  Roku
+ read -t 4
+ echo 'Zdechniesz Za...'
Zdechniesz Za...
+ read -t 2
+ echo '...Juz!'
...Juz!
+ read -t 1
+ c
I nie mam pojecia czemu wyskoczylo
/bin/lata: line 3: rok: polecenie nieodnalezione
PS(jk33)=Ale ja wolałbym z expr :)
prosze o pomoc :) dziekuje Seba

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
[BASH]lata-problem z expr
« Odpowiedź #3 dnia: 2009-02-17, 14:15:36 »
rok = `date +"%Y"`
Bez spacji!

rok=`date +"%Y"`
A w skryptach nie powinno się używać własnych aliasów/poleceń. clear to clear. Aż tak nie boli wpisać całość w kod skryptu.
Tak samo ja mam "alias l='ls -la'", ale to nie znaczy, że powinienem używać "l" w skryptach.
Skrypt pisze się raz, a potem ma działać. Niezależnie gdzie go uruchomisz. Przeniesiesz go na inną maszynę i potem będziesz myślał, czemu nie działa? :)