#!/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.