Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Skrypt  (Przeczytany 1588 razy)

cerber68

  • Gość
Skrypt
« dnia: 2019-02-02, 20:43:08 »
Mam napisać skrypt do szkoły więc napisałem ale podczas uruchomienia wyskakuje mi komunikat "Linia 38 : Błąd składni : nieoczekiwany koniec pliku " Nie wiem gdzie jest błąd może ktoś pomoże ?

#!/bin/bash
echo "============MENU============"
echo "Podaj numer opcji"
echo "1. Utwórz nowego użytkownika"
echo "2. Wyświetl zalogowanych użytkowników"
echo "3. Utwórz plik"
echo "4. Zmień prawa pliku"
echo "5. Nmon"
echo "============================="

if [$opcja == "1"];
then echo "Podaj nazwę użytkownika którego chcesz utworzyć:"
read $uz
adduser $uz
$uz
echo "Utworzono użytkownika o nazwie ${uz}"
elif
[$opcja == "2" ]; then whoel
if [$opcja == "3" ];
then echo "Podaj nazwę pliku jaki chcesz utworzyć:"
read plik
cat >> $plik
echo "Pomyślnie utworzono plik o nazwie ${plik}"
elif
[$opcja== "4"];
then echo "Proszę podać ścieżkę pliku"
read sciezka
echo "Podaj sposób zmiany praw i jakie prawa chcesz zmienić"
read kod
chmod $kod $sciezka
echo "Zmieniono prawa pliku"
if [$opcja = "5"];
then nmon
elif [$opcja > "5"];
then echo "Podano zły numer opcji"
fi


beaker

  • Gość
Odp: Skrypt
« Odpowiedź #1 dnia: 2019-02-02, 21:18:07 »
To zacytuj tą linię 38.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Odp: Skrypt
« Odpowiedź #2 dnia: 2019-02-03, 10:38:11 »
1. Milo by bylo zobaczyc tagi [ code ]  [ / code ]
https://pl.wikipedia.org/wiki/BBCode
https://en.scratch-wiki.info/wiki/BBCode

2.  Skrypt mozna napisac w jednej linii,
ale mozna tez tak napisac aby byl bardzo dobrze czytelny.
Wiec popraw abysmy my mogli odrazu widziec, a takze Ty jak pieknie robisz instrukcje warunkowa " if ".

3. Porownaj sobie potem z tym https://bash.0x1fff.com/instrukcje_warunkowe/if-else.html

4. To jest wlasnie blad skladni.
To ze postanowiles uzyc if , potem znowu if potem znowu if i zrobiles z tego 3 razy if bez zamkniecia kazdego kodem / znakiem fi.
To jest ten " nieoczekiwany koniec " Bash chcial abys poprawnie uzywal if.
Napewno nie to chciales osiagnac, spojrz w przyklady.
Akurat numer linii moze nie byc zbyt dokladny w zaleznosci od bledu,
ale lepsze to nic nic.

5. Jeszcze cos. Co to jest nmon i whoel tak beztrosko napisane ?
« Ostatnia zmiana: 2019-02-03, 10:58:32 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Skrypt
« Odpowiedź #3 dnia: 2019-02-03, 12:28:36 »
Wrzuć cały skrypt na ShellCheck i tam go edytuj. Skądinąd jest w tym listingu tyle błędów, że nie wiadomo od czego zacząć.

* Skąd bierze się wartość zmiennej opcja?
* W shellach wywodzących się od Bourne'a porównanie to = nie ==
* W warunkach dookoła każdego elementu powinny być spacje: czyli nie [$a=1] a [ $a = 1 ]
* Raz robisz if, raz elif - zdecyduj się, wcięcia pomogą.
* Warunek elifa powinien być w tej samej linii co elif, nie w następnej (czytelność)
* > nie pracuje na liczbach, tylko na stringach - czyli "5">"44" jest prawdziwe.
* Poczytaj o konstrukcji case.
« Ostatnia zmiana: 2019-02-03, 15:49:00 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy