Newsgroup: it.comp.os.linux.iniziare
Titolo: Variabili predefinite e login shell

Se faccio questo script pippo:
if [ "$1" = "--help" ] || [ "$1" = "" ]; then
echo; cat $0
else
echo
blablabla
echo
fi
e se poi do:
[~]dalet_$: . ./pippo
il $1 vuoto non lo prende, ma mi dice qcs circa il bell-style,
mantre me lo prende infallibilmente in tutti i moltissimi
script eseguibili.
Ho provato in tutti i modi a cambiare il test:
[ $1 = "" ]; [ $1="" ]; [ $1= ]... niente da fare.
Inoltre non mi prende il $0 che mi serve per vedere lo
script stesso con cat, ma questo l'ho 1/2 capito.
Son io che prendo Fischi per Fiaschi - come dice Max?
Ah.. e Nota Bene che finche' ero con la lenny mi andavano
tutti benissimo! (son parecchie utility che ho in ~/bin).
-- 
Saluti, Dalet

 if [ "$1" = "--help" ] || [ "$1" = "" ]; then
[ "$1"a = "a" ]
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

[ "$1"a = "a" ]
Molte grazie!! c'ho dovuto pensare un po' ma adesso ci sono
arrivato a capire l'idea, da me* va solo cosi':
if [ "$1" = "--help" ] || [ "$1"a=a ]; then
se metto spazi, o se metto virgolette a destra, niente.
Cosi' sembra che vada perfetto.
-------
*
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
-- 
Saluti, Dalet

 [~]dalet_$: . ./pippo
No, questa è (da)sh. Siccome così NON esegui uno script, ma leggi un 
semplice file di testo e ne esegui i comandi, il file NON è $0, e i suoi 
eventuali parametri di lancio NON sono $*.
Se fai . ./pippo, $0 è la shell. :)
Col modo del _punto_, in sh $0 è sh e in bash sarebbe bash. In bash, 
però, a differenza che in sh, gli eventuali parametri di lancio di pippo 
sarebbero comunque gestibili con $*.
In bash se ./pippo è:
if [[ $1 = "--help" ]] || [[ $1 = "" ]] ;
then echo questa è $0 $1 ;
else
echo blablabla ;
fi
allora . ./pippo --help ti dà:
lem@biggy:~$ . ./pippo --help
questa è bash --help
cat: bash: Nessun file o directory
In sh l'--help non verrebbe preso.
Su sh crea uno script, e poi eseguilo:
#! /bin/dash
if [ "$1" = "--help" ] || [ -z $1 ] ;
then echo questa è $0 $1 ;
cat $0 ;
else
echo blablabla ;
fi
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
____________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
 
http://boinc.berkeley.edu
 
 
http://www.worldcommunitygrid.org/index.jsp
 
http://boincsimap.org/
 
http://www.gpugrid.net/
 

allora . ./pippo --help ti dà:
Eh.. e' un po' complicatino, il fatto centrale - se non ho
capito ancora male - e' che quando fai eseguire col . (cioe'
con la shell di login) a bash nessuno glielo dice di mettere
dei valori nelle variabili $1, $2.. perche' l'assenza d'una
coda di comando non e' la stessa cosa d'una coda nulla.
Anche il modo di Roberto (roberto) me lo prende solo quando
si vede che in memoria da qualche parte c'ha gia' i parametri
giusti dati in precedenza.. boh insomma se in pippo ho messo:
if [ "$1" = "" ]; then blablabla
allora se do:
. ./pippo ""
e' tutto Ok perche' bash azzera $1, mentre se invece do:
. ./pippo
non va, perche' bash in $1 non ci mette nulla e chi lo sa
cosa diavolo contiene gia', o meglio: credo che $1 abbia in
questo caso un significato differente, che ha qcs a che
vedere con bell-style, invece di quello di variabile.
-- 
Saluti, Dalet

 In ogni caso credo che dash non c'entri nulla 
Avevo creduto di dedurre, da quel che volevi fare e da come non ti 
riusciva, che tu avessi appunto dash come shell di login. Sorry.
