PDA

View Full Version : [script bash] confronto tra due numeri


mame83
27-06-2011, 10:52
Ciao a tutti. Sto iniziando da poco ad usare gli script bash da ubuntu e mi sto trovando in difficoltà. Il mio script deve semplicemente(per più esperti di me) scrivere in output il risultato del confronto tra due numeri (maggiore o minore).


#!/bin/sh
echo "valore primo e $1"
echo "valore secondo e $2"
if [test $1 -lt $2]; then
echo " $1 minore $2 "
else
echo " $2 maggiore $1 "
fi

io da terminale do i due numeri :
./script.sh 4 5
in output mi da l errore : test not found però mi da correttamente 5 ($2) maggiore di 4($1).
qualcuno saprebbe aiutarmi ???? grazie in anticipo.

marco.r
27-06-2011, 11:28
#!/bin/sh
echo "valore primo e $1"
echo "valore secondo e $2"
if [ $1 -lt $2]; then
echo " $1 minore $2 "
else
echo " $2 maggiore $1 "
fi

marco.r
27-06-2011, 11:29
Oppure anche


#!/bin/sh
echo "valore primo e $1"
echo "valore secondo e $2"
if $( test $1 -lt $2); then
echo " $1 minore $2 "
else
echo " $2 maggiore $1 "
fi


con le quadre ( [ 41 -lt $2] ) utilizzi le funzionalita' interne di bash, mentre test e' un eseguibile, che offre funzionalita' analoghe, per cui se lo usi devi metterlo all'interno di $() per testarne il valore di ritorno

mame83
27-06-2011, 18:11
#!/bin/sh
echo "valore primo e $1"
echo "valore secondo e $2"
if [ $1 -lt $2]; then
echo " $1 minore $2 "
else
echo " $2 maggiore $1 "
fi

se io faccio ./confronto.sh 4 1
l output me lo da giusto come hai fatto tu però prima mi dice :
./confronto.sh: 8: [4: not found
4 maggiore 1

marco.r
27-06-2011, 19:59
se io faccio ./confronto.sh 4 1
l output me lo da giusto come hai fatto tu però prima mi dice :
./confronto.sh: 8: [4: not found
4 maggiore 1
Hai lasciato lo spazio tra la [ e il $1?

zuper
27-06-2011, 23:20
Ciao a tutti. Sto iniziando da poco ad usare gli script bash da ubuntu e mi sto trovando in difficoltà. Il mio script deve semplicemente(per più esperti di me) scrivere in output il risultato del confronto tra due numeri (maggiore o minore).


#!/bin/sh
echo "valore primo e $1"
echo "valore secondo e $2"
if [test $1 -lt $2]; then
echo " $1 minore $2 "
else
echo " $2 maggiore $1 "
fi

io da terminale do i due numeri :
./script.sh 4 5
in output mi da l errore : test not found però mi da correttamente 5 ($2) maggiore di 4($1).
qualcuno saprebbe aiutarmi ???? grazie in anticipo.

nn c'entra molto con bash...a cui hanno già risposto

ma

$1 minore $2 = $2 maggiore $1 ;);)

mame83
28-06-2011, 08:49
Hai lasciato lo spazio tra la [ e il $1?

si bisognava lasciare lo spazio anke tra $2 e ].

#!/bin/sh
echo "valore primo e $1"
echo "valore secondo e $2"
if [ $1 -lt $2 ]; then
echo "$1 minore $2 "
else
echo "$1 maggiore $2 "
fi

funziona ed ho cambiato anke il secondo echo come giustamente mi diceva zuper.
Se invece voglio usare la variabile test devo farlo in questo modo:

#!/bin/sh
echo "valore primo e $1"
echo "valore secondo e $2"
if test $1 -lt $2 ; then
echo "$1 minore $2 "
else
echo "$1 maggiore $2 "
fi

grazie a tutti per l aiuto.