kwb
08-02-2012, 12:24
Ho un programma da fare in BASH, una semplice calcolatrice che, preso come argomenti 3 parametri ( numero1, operatore, numero2 ) mi deve fare la corrispondente operazione. Ad esempio:
./scrip.sh 1 + 2
Deve stamparmi 3.
L'esercizio tuttavia chiede due cose:
1. Controllare che il primo e il secondo argomento siano numeri interni
2. Controllare che l'operatore sia uno di questi caratteri: + - x /
Ho difficoltà a fare il primo ( il secondo non c'ho ancora provato ).
Questo è il codice che sto cercando di utilizzare:
if [[ "$1" =~ ?([0-9]) ]]
then
#switch/case per fare le operazioni
else
echo "NAN"
fi
exit
Ho provato un po' di tutto, dal togliere l'if e fare tutto su una riga, usare le tonde, usare una sola quadra, usare il != invece del =~ . NIENTE!
Il massimo che sono riuscito ad ottenere è: mettendo un interno stampa, ma non entra nell'else se metto una lettera...
Come si fa?
Poi chiaramente il controllo è incompleto perchè dovrei aggiungerci un pure il controllo su $3, ma un passo alla volta... :O
./scrip.sh 1 + 2
Deve stamparmi 3.
L'esercizio tuttavia chiede due cose:
1. Controllare che il primo e il secondo argomento siano numeri interni
2. Controllare che l'operatore sia uno di questi caratteri: + - x /
Ho difficoltà a fare il primo ( il secondo non c'ho ancora provato ).
Questo è il codice che sto cercando di utilizzare:
if [[ "$1" =~ ?([0-9]) ]]
then
#switch/case per fare le operazioni
else
echo "NAN"
fi
exit
Ho provato un po' di tutto, dal togliere l'if e fare tutto su una riga, usare le tonde, usare una sola quadra, usare il != invece del =~ . NIENTE!
Il massimo che sono riuscito ad ottenere è: mettendo un interno stampa, ma non entra nell'else se metto una lettera...
Come si fa?
Poi chiaramente il controllo è incompleto perchè dovrei aggiungerci un pure il controllo su $3, ma un passo alla volta... :O