Live Support My forum, my way! Il forum dei newsgroup: Linux » Variabili predefinite e login shell
My forum, my way! Il forum dei newsgroup
Fast Uncompromising Discussions.Newsgroup FUDforum will get your users talking.

Loading
Utenti      F.A.Q.    Registrati    Login    Home
Home » Computer » Linux » Variabili predefinite e login shell
Variabili predefinite e login shell [messaggio #36488] mer, 09 marzo 2011 21:14 Messaggio successivo
Dalet  è attualmente disconnesso Dalet
Messaggi: 210
Registrato: novembre 2010
Senior Member
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
Re: Variabili predefinite e login shell [messaggio #36491 è una risposta a message #36488] mer, 09 marzo 2011 22:14 Messaggio precedenteMessaggio successivo
Roberto  è attualmente disconnesso Roberto
Messaggi: 892
Registrato: maggio 2009
Senior Member
Dalet ha scritto:
> Se faccio questo script pippo:
>
> 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 rpoggi@softhome.net
Re: Variabili predefinite e login shell [messaggio #36492 è una risposta a message #36491] gio, 10 marzo 2011 10:28 Messaggio precedenteMessaggio successivo
Dalet  è attualmente disconnesso Dalet
Messaggi: 210
Registrato: novembre 2010
Senior Member
Il 09-03-2011, roberto dice:
>Dalet ha scritto:

>>Se faccio questo script pippo:
>>if [ "$1" = "--help" ] || [ "$1" = "" ]; then

>[ "$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
Re: Variabili predefinite e login shell [messaggio #36494 è una risposta a message #36488] gio, 10 marzo 2011 10:53 Messaggio precedenteMessaggio successivo
Lem Novantotto  è attualmente disconnesso Lem Novantotto
Messaggi: 166
Registrato: novembre 2010
Senior Member
Dalet ha scritto:

Ok, io ci provo eh! Vado così un po' a naso, eh! Mi scusate per le
probabili cavolate? :)

> Se faccio questo script pippo:
>
> if [ "$1" = "--help" ] || [ "$1" = "" ]; then echo; cat $0
> else
> echo
> blablabla
> echo
> fi
>
> e se poi do:
> [~]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/
Re: Variabili predefinite e login shell [messaggio #36495 è una risposta a message #36494] gio, 10 marzo 2011 12:59 Messaggio precedenteMessaggio successivo
Dalet  è attualmente disconnesso Dalet
Messaggi: 210
Registrato: novembre 2010
Senior Member
Il 10-03-2011, Lem Novantotto dice:
>Dalet ha scritto:

>>Se faccio questo script pippo:
>>if [ "$1" = "--help" ] || [ "$1" = "" ]; then echo; cat $0
>>else
>>echo
>>blablabla
>>echo
>>fi
>>e se poi do:
>>[~]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. :)

Si' questo di $0 l'avevo +o- capito, pero' il comando . e il
comando source, se la shell di login e' bash, sono la stessa
cosa.
In ogni caso credo che dash non c'entri nulla perche' viene
chiamato ad esempio se fai eseguire uno script eseguibile
che inizia cosi':
#!/bin/sh
invece che:
#!/bin/bash
infatti /bin/sh e' un link a /bin/dash, invece quando dai
il comando source fai eseguire uno script anche non
eseguibile dalla shell di login, cioe' quasi sempre bash
se uno non se n'e' scelta un'altra.

>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à:

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
Re: Variabili predefinite e login shell [messaggio #36496 è una risposta a message #36495] gio, 10 marzo 2011 14:44 Messaggio precedente
Lem Novantotto  è attualmente disconnesso Lem Novantotto
Messaggi: 166
Registrato: novembre 2010
Senior Member
Dalet ha scritto:

> 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.
--
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/
Argomento precedente:Lazarus: toolkit in uso ?
Argomento successivo:Debian Mint
Vai al forum:
  


Ora corrente: sab apr 27 04:11:11 CEST 2024

Tempo totale richiesto per generare la pagina: 0.00960 secondi
.:: Contatti :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Live Support