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

Skrypt w bash'u

VPS Starter Arubacloud
0 głosów
337 wizyt
pytanie zadane 12 marca 2018 w Inne języki przez yutyub Obywatel (1,140 p.)
edycja 12 marca 2018 przez Patrycjerz

Skrypt, ktory na podstawie wieku wprowadzonego przez uzytkownika okresli czy jest on

- przedszkolakiem (3-6 lat)

- uczniem szkoly podstawowej (7-15 lat)

- uczniem szkoly sredniej (16-20 lat)

Cos zle zrobilem, bo nie dziala tak, jak powinno

#!/bin/bash
echo podaj wiek
read wiek
if [$wiek -gt 3 -a $wiek -lt 6]
then
echo jestes przedszkolakiem
elif [$wiek -gt 7 -a $wiek -lt 15]
echo jestes uczniem szkoly podstawowej
else [$wiek -gt 16 -a $wiek -lt 20]
fi

pozniej w terminalu

chmod +x nazwa
./nazwa

1 odpowiedź

+1 głos
odpowiedź 12 marca 2018 przez mrcnsct Nałogowiec (36,390 p.)
Po elif powinno być then, tak jak po if. Po [ i przed ] powinna być spacja. Czy zamiast gt i lt nie chodziło ci o ge i le (większe równe i mniejsze równe, zamiast większe i mniejsze)? Po else nie powinno być warunku, a jak chcesz warunek to zamiast else napisz elif then.
komentarz 12 marca 2018 przez yutyub Obywatel (1,140 p.)

Poprawilem na taki
 

#!/bin/bash
echo podaj wiek
read wiek
if [ $wiek -ge 3 -a $wiek -le 6 ]
then 
echo jestes przedszkolakiem
elif [ $wiek -ge 7 -a $wiek -le 15 ]
then
echo jestes uczniem szkoly podstawowej
else [ $wiek -ge 16 -a $wiek -le 20 ]
echo jestes uczniem szkoly sredniej
fi



I jest problem, gdy wpisze mniejsza wartosc niz 3 lub wieksza niz 20

Btw. jak zrobic cos takiego, zeby mozna bylo jeszcze raz wpisac cos z klawiatury, bo za kadym razem musze uruchamiac skrypt

https://imgur.com/OIrm5K4

komentarz 12 marca 2018 przez Mateusz Pijanowski Bywalec (2,130 p.)
edycja 14 marca 2018 przez Mateusz Pijanowski

Nie masz zdefiniowanego zachowania dla wieku poniżej 3 lat i powyżej 20. Nie wiem też dlaczego dałeś opis warunku dla else chyba z definicji else nie powinno mieć żadnego warunku :)

#!/bin/bash

function start
{
echo "Podaj swój wiek:"
read wiek

if [ $wiek -gt 3 -a $wiek -lt 6 ] ; then
echo "Jesteś przedszkolakiem"
read
start
elif [ $wiek -gt 7 -a $wiek -lt 15 ] ; then
echo "Jesteś uczniem szkoły podstawowej"
read
start
elif [ $wiek -gt 16 -a $wiek -lt 20 ] ; then
echo "Jesteś uczniem szkoły średniej"
read
start
else
echo "Jesteś poza zakresem!"
read
​​​​​​​start
fi
}

start

To moja propozycja skryptu, który rozwiązuje Twoje problemy wraz z:

Btw. jak zrobic cos takiego, zeby mozna bylo jeszcze raz wpisac cos z klawiatury, bo za kadym razem musze uruchamiac skrypt 

Dzięki zastosowaniu funkcji. Dawno nic nie pisałem w bashu więc mogą pojawić się błędy, gdyby były problemy - pisz :)

komentarz 13 marca 2018 przez yutyub Obywatel (1,140 p.)
edycja 13 marca 2018 przez yutyub

skrypt podaje odpowiedz i takie info

./2: line 12: [1: command not found
./2: line 16: [1: command not found

 

a gdybym chcial bez function i normalnie takie cos

#!/bin/bash
echo "Podaj swój wiek:"
read wiek
if [ $wiek -gt 3 -a $wiek -lt 6 ] ; then
echo "Jesteś przedszkolakiem"
elif [$wiek -gt 7 -a $wiek -lt 15] ; then
echo "Jesteś uczniem szkoły podstawowej"
elif [$wiek -gt 16 -a $wiek -lt 20] ; then
echo "Jesteś uczniem szkoły średniej"
else
echo "Jesteś poza zakresem!"
fi

jakakolwiek liczbe wpisze mam komunikat, ze jestem poza zakresem

 

poprawilem

#!/bin/bash
echo podaj wiek
read wiek
if [ $wiek -ge 3 -a $wiek -le 6 ] ; then
echo jestes przedszkolakiem
elif [ $wiek -ge 7 -a $wiek -le 15 ] ; then
echo jestes uczniem szkoly podstawowej
elif [ $wiek -ge 16 -a $wiek -le 20 ] ; then
echo jestes uczniem szkoly sredniej 
else [ $wiek -ge 20 -a $wiek -le 3 ] ;
echo nie chodzisz do szkoly
fi

 

komentarz 14 marca 2018 przez Mateusz Pijanowski Bywalec (2,130 p.)
Co poprawiłeś skoro popełniłeś ten sam błąd przy else?

Co do mojego kodu, już go poprawiłem (mały błąd związany z warunkami). Całość powinna już poprawnie działać.

Podobne pytania

+1 głos
1 odpowiedź 304 wizyt
pytanie zadane 13 czerwca 2021 w Inne języki przez mattaha Użytkownik (690 p.)
0 głosów
1 odpowiedź 388 wizyt
pytanie zadane 15 stycznia 2021 w Inne języki przez niezalogowany
+2 głosów
0 odpowiedzi 377 wizyt
pytanie zadane 2 czerwca 2019 w Inne języki przez Missya122 Nowicjusz (140 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...