Newsgroup: it.comp.os.linux.iniziare
Titolo: script sh

#! /bin/sh -x
if [ "$NAME"="" ]; then
        PROVA1=${NM##*ABC}
        PROVA2=${PROVA1%DEF}
else
        PROVA2=$NAME
fi
Non funziona.
Quello che vorrei è che se la variabile PROVA2 contenesse la variabile NAME
nel caso in cui non sia vuota.
Non so perchè ma l' else non viene mai eseguito, anche se NAME è vuota.
Qualche aiuto?
Ciao e grazie mille
--
Alex the knight

if [ "$NAME"="" ]; then
if [ $NAME="" ]; then
Perché? Man bash.
Ciao.
-- 
Antonio | Per ottenere un file PDF da un file PostScript:
Tip  of | $ ps2pdf 
input.ps
 [output.pdf]
the day |
0003    |

 if [ $NAME="" ]; then
Il problema non penso sia negli apici doppi infatti penso che $NAME e
"$NAME" per bash siano la stessa cosa infatti prima dovrebbe togliere gli
apici doppi e _dopo_ sostituire a $NAME il contenuto della variabile NAME.
Un modo funzionante e'
if [ "$NAME" == "" ]; then o anche if [ $NAME = "" ]; then
ma comunque spaziati.
-- 
Sono un servitore del Fuoco Segreto, e reggo la fiamma di Anor.
A nulla ti servira' il fuoco oscuro, fiamma di Udun.
Torna nell'Ombra! Non puoi passare.

ma comunque spaziati.
Oh, questa non la sapevo.
Mi cospargo il capo di cenere (sti giorni ne sto affilando diverse..)
:-/
-- 
Antonio | Per fare un tar separato per tutte le sottodirectory contenute nella
Tip  of | directory corrente:
the day | find . -maxdepty 1 -type d \! -name "." -exec tar cf {}.tar {} \;
0017    |

 Oh, questa non la sapevo.
A dire la verita' neanch'io ne ero cosi' sicuro e ho provato quello script
un po' in tutti i modi per vedere come si comportava, solo che visto le
prime esperienze con gli script di bash la prima cosa che guardo sono
appunto gli spazi, anche se il concetto teorico non mi e' assolutamente
ancora chiaro (ad esempio perche' ["pippo" == "pippo"] e' sbagliato? dove
sta scritto che fra la quadra e il primo termine ci vuole uno spazio? ).
mah...


sta scritto che fra la quadra e il primo termine ci vuole uno
spazio? ).
]zac[
Per esempio sta scritto nel nel file system? :
# [
-bash: [: missing `]'
# [w
-bash: [w: command not found
# ls -al 'which ['
lrwxrwxrwx    1 root     root            4 dic 31 21:36 /usr/bin/[ ->
test*
Curioso no?

test*
???
Io non ce l'ho.
Mi sa che del tuo post non ho capito un granché (queste sono le cose che
mi fanno sentire ignorante...)
-- 
Antonio | Per stampare una pagina di manuale:
Tip  of | $ man comando | a2ps --catman -2 -o 
comando.ps
the day | $ lp 
comando.ps
0005    |

 mi fanno sentire ignorante...)
Azzardo:
per la shell
["pippo" == "pippo"]
equivale a
comando:
	["pippo"
argomenti:
	1) ==
	2) "pippo"]
che 99 su 100 non funzionera`.
A meno di non avere un comando '["pippo"' che fa qualcosa di utile, 
ovviamente :)
Invece
[ "pippo" == "pippo" ] # notare gli spazi: 
                       # per la shell di default sono separatori!
per la shell equivale a
comando:
	[
argomenti:
	1) "pippo"
	2) ==
	3) "pippo"
	4) ]
Che, di solito, fa quanto ci si aspetta.
((man|info) test per verifiche :)
-- 
Ikitt 
"Stupid people do stupid things smart people outsmart each others"
*** mailserver: 
freemail.it

((man|info) test per verifiche :)
Ho trovato un errore nella documentazione italiana?
da man test in italiano:
----------------------
SINTASSI
       test [espr]
----------------------
la versione inglese, invece:
----------------------
SYNOPSIS
       test EXPRESSION
       [ EXPRESSION ]
----------------------
 
Qui si vede chiaramente lo spazio... :-/
Ciao.
-- 
Antonio | Linux Quick and Easy?   
http://www.mrshark.it/qechowto/
Tip  of |
the day | Linux approfondito?     
http://a2.swlibero.org/
0024    |

        test [espr]
In effetti e` ambiguo.


mi fanno sentire ignorante...)
]zac[
Ma no.
L'ipotesi e' che per qualche motivo, forse per tradizione la [ che
segnala un test non e' sintassi della shell, ma un comando esterno,
quindi per forza che il file/comando [ esiste/funziona e [pippo non
esiste/non funziona.
Un parser del codice puo' distingure la [ da [pippo ( [ e' un comando,
[pippo non lo e'), in un file/comando non e' possibile, sono tutti e due
nomi di file validi.

        2) "pippo"]
Mi sembra molto logica la tua spiegazione, comunque anch'io (slack8.1) non
ho il comando "[", ho controllato anche nelle sh-utils, strano...


 Torna nell'Ombra! Non puoi passare.
[OT LAMPO!]
Molto, MOLTO bello. Anche se il film de "Le due Torri"  mi ha un 
po` deluso.


 (quindi -com'e` logico aspettarsi- le cose funzionano lo stesso)
Hai ragione, infatti help [ ha confermato :)
-- 
Sono un servitore del Fuoco Segreto, e reggo la fiamma di Anor.
A nulla ti servira' il fuoco oscuro, fiamma di Udun.
