Witam
Mam następujący skrypt dodawania argumentów
Próbuje zmodyfikować go tak, aby wypisał mi wszystkie poprawne argumenty przed podaniem wyniku obliczeń. Oraz w przypadku wykrycia niewłaściwego argumentu podał w komunikacie o błędzie ten argument (numer i wartość) oraz, aby pominą go w obliczeniach.
Proszę o pomoc
Bash dodawanie argumentów
-
- Piegowaty Guziec
- Posty: 1
- Rejestracja: 16 lis 2017, 10:12
- Płeć: Mężczyzna
- Wersja Ubuntu: 16.04
- Architektura: x86
Bash dodawanie argumentów
Ostatnio zmieniony 17 lis 2017, 13:54 przez Qloda, łącznie zmieniany 1 raz.
-
- Piegowaty Guziec
- Posty: 26
- Rejestracja: 22 mar 2010, 14:35
- Płeć: Mężczyzna
- Wersja Ubuntu: 17.10
- Środowisko graficzne: GNOME
- Architektura: x86_64
Re: Bash dodawanie argumentów
Moja pierwsza propozycja:
Kod: Zaznacz cały
#!/bin/sh
if [ $# -eq 0 ]
then
echo "Poprawne wywolanie: $0 arg1 arg2 ..."
exit 1
fi
echo "Lista argumentów:"
suma=0
pozycja=0
while [ $1 ]
do
pozycja=$((pozycja + 1))
suma=$(($suma + $1))
if [ $(($1+0)) -ne 0 ]
then
echo "arg$pozycja: $1"
elif [ $1 = "0" ]
then
echo "arg$pozycja: $1"
else
echo "arg$pozycja: $1 - nie jest liczbą"
fi
shift
done
echo "Suma argumentow wynosi: $suma"
-
- Piegowaty Guziec
- Posty: 26
- Rejestracja: 22 mar 2010, 14:35
- Płeć: Mężczyzna
- Wersja Ubuntu: 17.10
- Środowisko graficzne: GNOME
- Architektura: x86_64
Re: Bash dodawanie argumentów
Druga propozycja jest bardziej elegancka bo wstępnie kontroluje przed sumowaniem format liczby poleceniem grep:
Kod: Zaznacz cały
#!/bin/sh
if [ $# -eq 0 ]
then
echo "Poprawne wywolanie: $0 arg1 arg2 ..."
exit 1
fi
echo "List argumentow:"
suma=0
pozycja=0
while [ $1 ]
do
pozycja=$((pozycja + 1))
echo $1 | grep -E '^-?[0-9]{1,}$' > /dev/null
if [ $? -eq 0 ]
then
echo "arg$pozycja: $1"
suma=$(($suma + $1))
else
echo "arg$pozycja: $1 - nie jest liczbą"
fi
shift
done
echo "Suma argumentow wynosi: $suma"
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości