Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

błąd składni : nieoczekiwany koniec pliku

Zaczęty przez Pablo, Luty 15, 2018, 05:46:01 PM

Poprzedni wątek - Następny wątek

Pablo

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

lesio

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

TataPingu

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

Czesław

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.
------------------------
Pozdrawiam Czesław dell-OptiPlex-9020-AIO, i7, 8 GB RAM

Zobacz najnowsze wiadomości na forum