[BASH] Klasy IP

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
yogurt93
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 14 lis 2013, 14:57
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86_64

[BASH] Klasy IP

Post autor: yogurt93 »

Witam!
Zaczynam soją przygodę z pisaniem skryptów w bashu i cały czas natykam się na nowe problemy. Póki co wszystko udawało mi się rozwiązać samemu, ale tym razem jest inaczej, a mianowicie nie ogarniam podawania zakresu liczbowego w if'ie.

Program ma pobierać jako parametr adres IP i sprawdzić jakiej on jest klasy, a następnie wypisać tę klasę na ekran. Problem w tym, że przykładowo dla IP 200.*.*.* wypisuje, że jest on klasy B, a nie C. Proszę o pomoc.

Kod: Zaznacz cały

#!/bin/bash

p=`echo "$1" | cut -d '.' -f 1`

if [ $p -le 126 ]
then
    echo "Podane IP jest klasy A"

elif (( $p-ge128 && $p-le191 ))
then
    echo "Podane IP jest klasy B"

elif (( $p-ge192 && $p-le223 ))
then
    echo "Podane IP jest klasy C"

elif (( $p-ge224 && $p-le239 ))
then
    echo "Podane IP jest klasy D"

elif (( $p-ge240 && $p-le255 ))
then
    echo "Podane IP jest klasy E"
else
    echo "Podane IP nie ma kasy milordzie!"
fi
w kolorze jak ktoś woli ;) http://pastebin.com/zkCDPwq2
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: [BASH] Klasy IP

Post autor: ethanak »

krótko:

Kod: Zaznacz cały

man awk
tak z ciekawości - po co powstał snobol, icon, awk, perl, python jeśli ktoś się upiera przy bashu? kompilator w bashu też da się napisać, tylko po kiego grzyba?
Кто жопой родился, чижиком не помрёт
yogurt93
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 14 lis 2013, 14:57
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: [BASH] Klasy IP

Post autor: yogurt93 »

to jest jedno z zadań od ćwiczeniowca, więc nic na to nie poradzę. Jak nie ogarnę awka to jeszcze się odezwę
adammaj1
Piegowaty Guziec
Piegowaty Guziec
Posty: 29
Rejestracja: 25 gru 2011, 12:37
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Środowisko graficzne: GNOME
Architektura: x86_64

Re: [BASH] Klasy IP

Post autor: adammaj1 »

Jaki jest dokładny wynik programu ?
Sprawdź czy działają poszczególne instrukcje if dla wybranych danych wejściowych
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: [BASH] Klasy IP

Post autor: jacekalex »

Ten skrypt autora, to kopanie z sandała w otwarte drzwi. :rotfl:

Dowody rzeczowe:
http://jodies.de/ipcalc
http://pypi.python.org/pypi/ipcalc/

A co słychać w repo:
http://packages.ubuntu.com/pl/raring/ipcalc
http://packages.ubuntu.com/pl/raring/python-ipcalc

Pozdro
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
Awatar użytkownika
Dwimenor
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1260
Rejestracja: 18 mar 2008, 16:14
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Architektura: x86_64

Re: [BASH] Klasy IP

Post autor: Dwimenor »

Oj, dajcie mu spokój. Chce się ręcznie bawić w Bashu i nauczyć porównywania liczb to niech się bawi.
Co do zasadniczego pytania:
Pierwszy "if" masz zrobiony bardzo ładnie, jak Bourne przykazał. Dalej jest już gorzej. Spróbuj skonstruować swoje "elify" tak:

Kod: Zaznacz cały

elif ([ warunek 1 ] operator_logiczny [warunek 2])
Zwróć uwagę na rodzaj nawiasów i rozmieszczenie spacji. Dodawaj też odstępy pomiędzy operatorami porównania a liczbami.
Dodaj sobie też do shebanga flagę "-x" to zobaczysz co dokładnie skrypt robi.

Kod: Zaznacz cały

#!/bin/bash -x
Poniższe zdanie jest fałszywe.
Powyższe zdanie jest prawdziwe.
yogurt93
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 14 lis 2013, 14:57
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: [BASH] Klasy IP

Post autor: yogurt93 »

@Dwimenor wielkie dzięki! działa! dobrze, że są ludzie, którzy umieją programować, pamiętają, jak sami się tego uczyli i jak ważna była dla nich pomoc innych. ;)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości