View Full Version : sh su UNIX SUN SOLARIS
ho la necessita di effettuare un confronto lessicografico fra stringhe in uno script da fare girare su Unix Sun... sotto IBM bastava fare
stringa1 /> stringa2
su Sun non funzia :(
Non so, solaris ha la bash?
Originally posted by "man bash"
string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.
dirai tu...un bel man bash?? :D
Originally posted by "cn73"
dirai tu...un bel man bash?? :D
:confused:
Intendi dire che hai risolto, vero?
Questa è la porzione dello script
if [ "$token" /> "$paletto" -a -f $token ]
se metto solo > non funziona...
Mi sa che il problema e' in quei -a -f ...
Prova cosi':
if [ [ -a -f $token ] ]
then
if [ [ "$token" > "$paletto" ] ]
...
ma -a sta per AND logico...
Originally posted by "cn73"
ma -a sta per AND logico...
:confused: :confused:
Originally posted by "man bash"
-a file
True if file exists.
L'and logico e' &&
These are similar to the Bash comparison operators && and ||, used within double brackets. [[ condition1 && condition2 ]]
The -o and -a operators work with the test command or occur within single test brackets. if [ "$exp1" -a "$exp2" ]
http://tldp.org/LDP/abs/html/comparison-ops.html
ho trovato l'errore l'operatore è \> non /> ...
un cavolo!! non funge!!!
#!/bin/sh
a="aaab"
b="aaaa"
if [ "$a" \> "$b" ]
then
echo cavolo!
else
echo e allora!
fi
prova.sh: test: unknown operator >
dove cavol sbaglio?
Sir Wallace
27-05-2003, 16:26
Io scribacchio un po' con sh sotto SUN e non mi sono mai imbattuto in
/> o \>
che significato deve avere? Cosa intendi per
'confronto lessicografico' ??
UPDATE:
vi test
#!/bin/sh
a="aaaa"
b="aaab"
if [ "$a" > "$b" ]
then
echo ok
else
echo ko
fi
exit 0
>./test
ok
>
E' quello che ti aspettavi??? :confused:
bhè si intende se una stringa è maggiore di un altra... in pratica come un elenco di nomi ordinati alfabeticamnte:
"Rossi" è minore di "Rosso"
nell'esempio infatti sbaglia! "aaaa" è minore di "aaab"
Ribadisco che su IBM AIX funziona benissimo...
Sir Wallace
27-05-2003, 16:47
Allora prova con nawk, se ti va...
#!/bin/sh
/usr/bin/nawk 'BEGIN {
a="Rossi"
b="Rosso"
if (a < b)
print "OK"
else
print "KO"
}'
>fuffa
OK
>
Deppiu' ora non mi viene in mente.... :(
Grazie comunque ;) domani chiedo al mio collega "Unix Man" :D
Ho risolto così:
#!/bin/sh
a="aaab"
b="aaaa"
prova=`echo $a $b | awk '{print ($1 > $2)}'`
echo $prova
if [ $prova = 1 ]
then
echo cavolo!
else
echo carota!
fi
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.