Strona 1 z 1
Bash dodawanie argumentów
: 16 lis 2017, 10:21
autor: Qloda
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
Re: Bash dodawanie argumentów
: 17 lis 2017, 09:24
autor: krzynycz
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"
Re: Bash dodawanie argumentów
: 17 lis 2017, 10:02
autor: krzynycz
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"