• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

While i if w bashu

Object Storage Arubacloud
0 głosów
219 wizyt
pytanie zadane 21 czerwca 2019 w Systemy operacyjne, programy przez assassin Gaduła (3,260 p.)

Zaraz mnie coś rozniesie. Co znowu robię nie tak? 

Chciałbym zrobić menu, ale w pętli. I zamiast wyświetlać się menu i czekać na wybranie opcji przez użytkownika to ta pętla działa przez cały czas. 

 

 

#!/bin/bash

#menu

loop=1
while [ $loop == 1 ] ; do
		echo "********************************************************"
		echo "*  1 - opcja1                         *"
		echo "*  2 - opcja2                          *"
		echo "*  3 - opcja3                  *"
		echo "*  4 - Wyście                                                         *"
		echo "********************************************************"	
		

		read opt

		if [ $opt == 1 ]; then
			echo "opcja1 "
			read limit
			echo $limit
			clear
			
		elif [ $opt == 2 ]; then
			echo "opcja2"
			
		elif [ $opt == 3 ]; then
				echo "opcja 3"
				
		elif [ $opt == 4 ]; then
			echo "Czy na pewno chcesz wyjść Y/N?"
			read exit
			
			if [ $exit == "Y" || "y" ]; then
			$loop=0
			
		else
			echo "Coś poszło nie tak. Spróbuj jeszzcze raz."
		fi
		
 
done 

Zgłasza mi cały czas problem z tym done. 

komentarz 21 czerwca 2019 przez Patrycjerz Mędrzec (192,320 p.)
Jaki błąd ci zgłasza?

Tak w ogóle Bash nie jest najlepszym językiem do pisania skryptów, ze względu na jego toporność. Lepiej użyć np. Pythona, który jest bezpieczniejszy i łatwiej się go debugguje.
komentarz 21 czerwca 2019 przez assassin Gaduła (3,260 p.)
Wiem, że lepiej. Z Pythonem nie mam problemów. Ale to jest skrypt na zaliczenie i muszę go napisać w Bashu właśnie

2 odpowiedzi

+1 głos
odpowiedź 21 czerwca 2019 przez RafalS VIP (122,820 p.)
wybrane 21 czerwca 2019 przez assassin
 
Najlepsza

Jeśli nie musisz to nie używaj basha. Python sprawdzi się o wiele lepiej. Wystarczy dodać pythonowy shebang i skrypt uruchamia się tak samo jak bashowy. A chyba ciężko dzisiaj o linuxa bez pythona.

#!/usr/bin/env python3

Ale do rzeczy, co bylo nie tak:

if [ $exit == "Y" || "y" ]; then
            $loop=0
             
        else

brakuje fi po ifie. I w tym samym ifie nie możesz zrobić tak: 

[ $exit == "Y" || "y" ]

są dwie opcje:

[ $exit == "Y" ] || [ $exit == "y" ]
# lub
[ $exit == "Y" -o $exit == "y" ]

lub operator podwójnych nawiasów, który jest troszkę inteligentniejszy:

[[ $exit == "Y" || $exit == "y" ]]

 

0 głosów
odpowiedź 21 czerwca 2019 przez j23 Mędrzec (194,920 p.)

Brakuje fi przed done :)

Gdybyś poprawnie sformatował kod, to byś zauważył błąd.

Podobne pytania

0 głosów
1 odpowiedź 105 wizyt
+2 głosów
1 odpowiedź 196 wizyt
pytanie zadane 18 kwietnia 2021 w Systemy operacyjne, programy przez szylvvia Początkujący (300 p.)
0 głosów
0 odpowiedzi 228 wizyt
pytanie zadane 21 czerwca 2021 w Nasze projekty przez mattaha Użytkownik (690 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...