PDA

View Full Version : sh su UNIX SUN SOLARIS


cn73
27-05-2003, 14:21
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 :(

lovaz
27-05-2003, 14:32
Non so, solaris ha la bash?

Originally posted by "man bash"

string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.

cn73
27-05-2003, 14:50
certo! ;)

cn73
27-05-2003, 14:51
dirai tu...un bel man bash?? :D

lovaz
27-05-2003, 14:56
Originally posted by "cn73"

dirai tu...un bel man bash?? :D

:confused:
Intendi dire che hai risolto, vero?

cn73
27-05-2003, 15:02
Questa è la porzione dello script

if [ "$token" /> "$paletto" -a -f $token ]

se metto solo > non funziona...

lovaz
27-05-2003, 15:11
Mi sa che il problema e' in quei -a -f ...
Prova cosi':

if [ [ -a -f $token ] ]
then
if [ [ "$token" > "$paletto" ] ]
...

cn73
27-05-2003, 15:33
ma -a sta per AND logico...

lovaz
27-05-2003, 15:37
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' &&

cn73
27-05-2003, 15:48
nei test??

cn73
27-05-2003, 15:52
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 /> ...

cn73
27-05-2003, 16:17
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:

cn73
27-05-2003, 16:32
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"

cn73
27-05-2003, 16:36
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.... :(

cn73
27-05-2003, 16:48
Grazie comunque ;) domani chiedo al mio collega "Unix Man" :D

cn73
28-05-2003, 10:06
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