Linuxiarze.pl Forum

Dystrybucje Linux => Ubuntu, Kubuntu, Xubuntu, Lubuntu => Wątek zaczęty przez: Pablo w Luty 15, 2018, 05:46:01 PM

Tytuł: błąd składni : nieoczekiwany koniec pliku
Wiadomość wysłana przez: Pablo w Luty 15, 2018, 05:46:01 PM
Witam wszystkich :)
Jestem początkowym użytkownikiem Linux i potrzebuję pomocy. Mianowicie mam do zrobienia dwa skrypty, wszystko idzie po mojej myśli do czasu gdy na końcu wyskakuje komunikat błąd składni : nieoczekiwany koniec pliku w linii w której nic nie napisałem. Szukałem kilka dni czegoś na ten temat i nic nie ma (raczej ja nie mogłem znaleźć). Jako, że jesteście na pewno już dobrze zaprzyjaźnieni z kolegą Linuxem to liczę na waszą pomoc. Dzięki i pozdrawiam
Oto programy :
1. Rozwiązanie równania kwadratowego :
#!/bin/bash
echo "Podaj A"
read A
echo "Podaj B"
read B
echo "Podaj C"
read C
delta="$((b*b-4*a*c))"
echo "scale=2;sqrt($delta) | bc"
if [$delta>0]; then echo "x=$((-b-sqr($delta)/2*a)) ; x=$((-b+sqrt($delta)/2*a)) | bc" fi
if [$delta=0]; then echo "Brak pierwiastków" fi
if [$delta<0]; then echo "x=$((-b/2*a))| bc" fi
end
2. Tworzenie kont z liczbami w kolejności na końcu
#!/bin/bash
echo "Podaj ilość kont"
read x
for ((i=1;$i=$x;i++)) ; do
   useradd konto$i
end
Tytuł: Odp: błąd składni : nieoczekiwany koniec pliku
Wiadomość wysłana przez: lesio w Luty 15, 2018, 11:43:07 PM
ad.1 "fi" jest instrukcją końcową do "if" i powinno być albo w nowej liniii, albo oddzielone średnikiem ";" od poprzedniego polecenia.
Ale program dalej nie będzie działał z powodu błędnego stosowania znaku potoku "|" . To musi być wykonane, a nie wyświetlane poleceniem "echo". Jak na początek, za dużo rzeczy chcesz zrobić w jednej linii i jednym poleceniem. Programu raczej nie pisze się w całości, by później wyłapywać błędy. Trzeba pisać po kolei, testując każdą nowo wprowadzoną frazę. Wtedy też dobrze poznasz basha i jego zachowanie ...

ad.2 Z tego, co pamiętam, struktura pętli to:
for ........
do
     ........
done
a u Ciebie jest end
Tytuł: Odp: błąd składni : nieoczekiwany koniec pliku
Wiadomość wysłana przez: TataPingu w Luty 16, 2018, 11:47:45 AM
Lesio ma rację, powinieneś po kolei testować każdą funkcję...

Zacznij może od założeń, poniżej masz kilka przykładów funkcji "read":

Przykład 00  Wczytanie 3 wartości (rób wszystko w terminalu i kończ enterem):

pablo@pablo:~ > read a b c
jeden 222 trzy

pablo@pablo:~ > echo $a
jeden

pablo@pablo:~ > echo $b
222

pablo@pablo:~ > echo $c
trzy


Przykład 01   Wczytanie 1 wartości (w 3):

pablo@pablo:~ > read a b c
jeden

pablo@pablo:~ > echo $a
jeden

pablo@pablo:~ > echo $b

pablo@pablo:~ > echo $c



Przykład 02  Wczytanie 5 wartości (w 3):

pablo@pablo:~ > read a b c
jeden dwa 333 dupa blada

pablo@pablo:~ > echo $a
jeden

pablo@pablo:~ > echo $b
dwa

pablo@pablo:~ > echo $c
333 dupa blada

Opcja -p "prompt"

Przykład 03   Wczytanie 3 wartości z tekstem:

pablo@pablo:~ > read -p "Proszę podać 3 wartości: " a b c
Proszę podać 3 wartości: jeden 222 trzy

pablo@pablo:~ > echo $a
jeden

pablo@pablo:~ > echo $b
222

pablo@pablo:~ > echo $c
trzy

Przykład 04   Wczytanie 1 wartości i funkcja REPLY:

pablo@pablo:~ > read -p "Proszę o uwagę: "
Proszę o uwagę: mam to GDZIES

pablo@pablo:~ > echo $REPLY
mam to GDZIES
Tytuł: Odp: błąd składni : nieoczekiwany koniec pliku
Wiadomość wysłana przez: Czesław w Maj 19, 2018, 02:03:00 PM
Znam się na matematyce, nie programowaniu. Ale jeśli delta=0 to jest jeden pierwiastek, a jeśli delta<0 to brak. A tak między nami nawet jeśli delta<0 to istnieją pierwiastki tyle, że w dziedzinie liczb zespolonych.