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

Pisanie skryptów w BASH

Object Storage Arubacloud
0 głosów
182 wizyt
pytanie zadane 21 lutego 2021 w Systemy operacyjne, programy przez Przemek Żukowski Nowicjusz (120 p.)
#!/bin/bash
valid()
{
    var1="$1";       var2="$2";       var3="$3"

    if [ -z $var1 ] ; then
        echo ""  >&2 ; return 1
    fi

    if [ "${var1%${var1#?}}" = "-" ] ; then
        test="${var1#?}"
    else
        test="$var1"
    fi

    result="$(echo  $test | sed ’s/[[:digit:]]//g’)"

    if [ ! -z $result ] ; then
        echo ""  >&2
        return 1
    fi

    if [ ! -z $var2 ] ; then
        if [ "$var1" -lt "$var2" ] ; then 
        echo ""  >&2
        return 1
        fi
    fi

    if [ ! -z $var3 ] ; then
        if [ "$var1" -gt "$var3" ] ; then
        echo ""  >&2
        return 1
        fi
    fi

    return 0
}

if valid "$1" "$2" "$3" ; then
echo ""
fi

Na zaliczenie dostałem między innymi taki listing do którego mam wykonać takie podpunkty:

1 Napisać do czego służy skrypt i podać 3 przykłady jego wywołania

2 Uzupełnić wszystkie puste polecenia echo wpisując odpowiednie komentarze 

3 Dodać komentarz opisujący co się dzieje w blokach (warunkowych, pętlach czy funkcjach)

 

Dotarłem do takiego rozwiązania:

#!/bin/bash
valid()
{
    var1="$1";       var2="$2";       var3="$3"

    if [ -z $var1 ] ; then #Sprawdzamy czy istnieje pierwszy parametr skryptu
        echo "Skrypt wywołany bez parametrów"  >&2 ; return 1
    fi

    if [ "${var1%${var1#?}}" = "-" ] ; then
        test="${var1#?}"
    else
        test="$var1"
    fi

    result="$(echo  $test | sed ’s/[[:digit:]]//g’)"

    if [ ! -z $result ] ; then
        echo "Odpowiedz po drógim IF "  >&2
        return 1
    fi

    if [ ! -z $var2 ] ; then
        if [ "$var1" -lt "$var2" ] ; then #Porównanie czy parametr 1 jest mniejszy od paramertu 2
        echo "Pierwszy parametr jest mniejszy od drógiego parametru"  >&2
        return 1
        fi
    fi

    if [ ! -z $var3 ] ; then
        if [ "$var1" -gt "$var3" ] ; then # Porównanie czy parametr 1 jest większy od parametru 3
        echo " Odpowiedz po czwartm IF"  >&2
        return 1
        fi
    fi

    return 0
}

if valid "$1" "$2" "$3" ; then
echo "Skrypt zakończył działanie z spełnioną funkcjią valid "
fi

Wiem już że mogę wywołać ten skrypt bez żadnego parametru i if w 6 lini kodu sprawdzi czy tak się stało czy jednak użyłem więcej argumentów.

natomiast mam problem z resztą wywołani, no i najważniejszy problem to taki że nie bardzo potrafię rozszyfrować te wyrażenia regularne które występują w liniach 10 11 i 16

 

czy ktoś mógł by mnie naprowadzić na znalezienie rozwiązania??

Myślę że jak zrozumiem co robią te wyrażenia regularne w tym konkretnym skrypcie to powinienem znaleźć dopasowania wywołani.

Dziękuje za każdą pomoc, czy sugestie.

1 odpowiedź

+1 głos
odpowiedź 22 lutego 2021 przez j23 Mędrzec (194,920 p.)

Jeśli dobrze rozumiem, warunek z linii 10 sprawdza, czy wartość var1 zaczyna się od --. Jeśli tak, usuwa jeden -.

W linii 16 sed usuwa wszystkie cyfry.

Podobne pytania

0 głosów
3 odpowiedzi 387 wizyt
pytanie zadane 3 marca 2020 w Systemy operacyjne, programy przez thekibi27 Bywalec (2,110 p.)
–3 głosów
0 odpowiedzi 887 wizyt
0 głosów
0 odpowiedzi 293 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...