Spiegazione su variabili Shell
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Spiegazione su variabili Shell
Ciao a tutti , sono sempre il solito rompiscatole che non capisce quello che legge....
Questa volta non ho capito una sezione riguardante le variabili shell del mio famoso libro di UNIX...
In particolare non ho capito la spiegazione data dalla wiki http://wiki.ubuntu-it.org/Programmazione/LinguaggioBash
Riguardanti le variabili $* $N $# $@
allora $N è un numero intero che definisce l'Nessimo argomento passato da terminale ad un programma....
innanzi tutto non ho capito cosa si intende per argomento non ho poi capito la sua differenza con $# che indica contiene il numero di argomenti passati da terminale al programma...
Non ho poi capito cosa s'intende per quotare gli argomenti di un programma, riferito alla spiegazione della variabile $@...
detto questo vorrei anche sapere il perchè queste variabili non rientrano nell'insieme delle variabili d'ambiente ossia...ogni volta che si apre un processo questo eredita dal padre le variabili di ambiente ma queste sopraindicate da dove provengono ? Vengono inizializzate dai file di inizializzazione e basta (come .profile e .bashrc) ?
grazie in anticipo per le risposte
saluti
Insidioso93
Questa volta non ho capito una sezione riguardante le variabili shell del mio famoso libro di UNIX...
In particolare non ho capito la spiegazione data dalla wiki http://wiki.ubuntu-it.org/Programmazione/LinguaggioBash
Riguardanti le variabili $* $N $# $@
allora $N è un numero intero che definisce l'Nessimo argomento passato da terminale ad un programma....
innanzi tutto non ho capito cosa si intende per argomento non ho poi capito la sua differenza con $# che indica contiene il numero di argomenti passati da terminale al programma...
Non ho poi capito cosa s'intende per quotare gli argomenti di un programma, riferito alla spiegazione della variabile $@...
detto questo vorrei anche sapere il perchè queste variabili non rientrano nell'insieme delle variabili d'ambiente ossia...ogni volta che si apre un processo questo eredita dal padre le variabili di ambiente ma queste sopraindicate da dove provengono ? Vengono inizializzate dai file di inizializzazione e basta (come .profile e .bashrc) ?
grazie in anticipo per le risposte
saluti
Insidioso93
Insidioso93
Re: Spiegazione su variabili Shell
Per quel che posso ti aiuto facendo un piccolo esempio.
Immangina di aver creato uno script chiamato "prodotto" per fare le moltiplicazioni che richiede due argomenti (i numeri da moltiplicare tra loro).
Supponi di volergli passare i due argomenti al momento in cui lo lanci:
All'interno dello script $1 sarà uguale a 16, $2 sarà uguale a 2 e $# sarà uguale al numero di argomenti passati (in questo caso di nuovo 2).
Il vantaggio sta nel fatto che ogni volta che invochi lo script puoi passargli argomenti differenti.
Per quanto riguarda $@....non saprei ???
Immangina di aver creato uno script chiamato "prodotto" per fare le moltiplicazioni che richiede due argomenti (i numeri da moltiplicare tra loro).
Supponi di volergli passare i due argomenti al momento in cui lo lanci:
Codice: Seleziona tutto
prodotto 16 2Il vantaggio sta nel fatto che ogni volta che invochi lo script puoi passargli argomenti differenti.
Per quanto riguarda $@....non saprei ???
Il mio blog: http://www.truffadimatrix.blogspot.com
- il_muflone
- Tenace Tecnocrate

- Messaggi: 18878
- Iscrizione: venerdì 1 maggio 2009, 15:31
- Desktop: GNOME Shell
- Distribuzione: Arch Linux x86_64
- Località: Profondo sud
- Contatti:
Re: Spiegazione su variabili Shell
ciao
immagina un programma qualsiasi, ad esempio
cp "nome del file" destinazione
se cp fosse un batch...
$0 = cp
$1 = nome del file
$2 = destinazione
$# = 2 (ovvero gli argomenti, oltre il nome del programma)
$* = nome del file destinazione (ovvero tutti gli argomenti)
$@ = nome del file destinazione (vedi sotto)
quotare significa suddividere.
per comprendere la differenza tra $* e $@ considera questo esempio
con $@ i parametri vengono distinti, con $* i parametri restano uniti in uno solo.
immagina un programma qualsiasi, ad esempio
cp "nome del file" destinazione
se cp fosse un batch...
$0 = cp
$1 = nome del file
$2 = destinazione
$# = 2 (ovvero gli argomenti, oltre il nome del programma)
$* = nome del file destinazione (ovvero tutti gli argomenti)
$@ = nome del file destinazione (vedi sotto)
quotare significa suddividere.
per comprendere la differenza tra $* e $@ considera questo esempio
Codice: Seleziona tutto
#!/bin/bash
echo prova con \$*
for p in "$*"
do
echo parametro: $p
done
echo prova con \$@
for p in "$@"
do
echo parametro: $p
doneCodice: Seleziona tutto
bash prova.sh "nome del file" destinazione
prova con $*
parametro: nome del file destinazione
prova con $@
parametro: nome del file
parametro: destinazione
Ultima modifica di il_muflone il martedì 31 agosto 2010, 16:37, modificato 1 volta in totale.
http://www.muflone.com - I miei contatti e i miei progetti - La guida completa a VirtualBox
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Re: Spiegazione su variabili Shell
Intanto vi ringrazio... succissivamente avevo trovato un esempio per l'utilizzo di $@ sempre sul libro...
in pratica veniva utilizzato il comando set 'comando'
gli apici erano rovesciati....
In pratica viene scritto che con questo comando viene riempita la variabile $@ che quota i parametri...
l'esempio era con il comando date ...
facendo poi l'echo di $1 $2 ecc....si vedevano le varie informazioni singole passate dal comando date. (Ho infatti creato lo script che mi consente di vedere all'entrata nella shell solo l'ora di sistema senza veder tutte le informazioni legate a date).
Per quanto riguarda l'esempio di ErSandro...come è possibile creare il programma da te citato che prende gli argomenti in fase di esecuzione? Quindi per argomenti si intendeva quello che avevo pensato ossia, semplicemente, quello che viene passato dall'input al programma....
grazie ancora
saluti
in pratica veniva utilizzato il comando set 'comando'
gli apici erano rovesciati....
In pratica viene scritto che con questo comando viene riempita la variabile $@ che quota i parametri...
l'esempio era con il comando date ...
facendo poi l'echo di $1 $2 ecc....si vedevano le varie informazioni singole passate dal comando date. (Ho infatti creato lo script che mi consente di vedere all'entrata nella shell solo l'ora di sistema senza veder tutte le informazioni legate a date).
Per quanto riguarda l'esempio di ErSandro...come è possibile creare il programma da te citato che prende gli argomenti in fase di esecuzione? Quindi per argomenti si intendeva quello che avevo pensato ossia, semplicemente, quello che viene passato dall'input al programma....
grazie ancora
saluti
Insidioso93
- il_muflone
- Tenace Tecnocrate

- Messaggi: 18878
- Iscrizione: venerdì 1 maggio 2009, 15:31
- Desktop: GNOME Shell
- Distribuzione: Arch Linux x86_64
- Località: Profondo sud
- Contatti:
Re: Spiegazione su variabili Shell
non ho capito la domanda.Insidioso93 ha scritto:Per quanto riguarda l'esempio di ErSandro...come è possibile creare il programma da te citato che prende gli argomenti in fase di esecuzione?
un esempio te l'ho indicato poco fa, se vuoi stampare i valori delle variabili usa echo $1, $* e così via.
http://www.muflone.com - I miei contatti e i miei progetti - La guida completa a VirtualBox
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Re: Spiegazione su variabili Shell
Non ho ben capito il tuo esempio Muflone....
abbi pazienza :-[ ti prego
abbi pazienza :-[ ti prego
Insidioso93
Re: Spiegazione su variabili Shell
Lo fa in automatico.
Se dai quel comando e dentro lo script usi le variabili $1 e $2 ci penserà la shell stessa a valorizzarle nel modo corretto.
Se dai quel comando e dentro lo script usi le variabili $1 e $2 ci penserà la shell stessa a valorizzarle nel modo corretto.
Il mio blog: http://www.truffadimatrix.blogspot.com
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Re: Spiegazione su variabili Shell
Ah quindi le variabili $1...$2...ecc vengono considerate dalla shell come gli argomenti di ingresso....capito....
Insidioso93
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Re: Spiegazione su variabili Shell
...ho capito cosa volevate dirmi....finalemente 8) (scusate ma ho avuto una giornata pesante)
Quindi ho eseguito l'esempio di ErSandro....
ho creato il programma som che, pratica, esegue la somma degli argomenti dati il codice è questo:
so che è una cavolata...però ho capito
grazie ancora a tutti
ciao
Quindi ho eseguito l'esempio di ErSandro....
ho creato il programma som che, pratica, esegue la somma degli argomenti dati il codice è questo:
Codice: Seleziona tutto
VAR1='expr $1 + $2'
echo VAR1grazie ancora a tutti
ciao
Insidioso93
- il_muflone
- Tenace Tecnocrate

- Messaggi: 18878
- Iscrizione: venerdì 1 maggio 2009, 15:31
- Desktop: GNOME Shell
- Distribuzione: Arch Linux x86_64
- Località: Profondo sud
- Contatti:
Re: Spiegazione su variabili Shell
visto che hai difficoltà a usare l'apice roverso `
usa al suo posto
VAR1=$(expr $1 + $2)
è anche molto più leggibile
usa al suo posto
VAR1=$(expr $1 + $2)
è anche molto più leggibile
http://www.muflone.com - I miei contatti e i miei progetti - La guida completa a VirtualBox
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Re: Spiegazione su variabili Shell
Il metodo da te utlizzato è quello delle stringhe? che metodo è ?
Ultima modifica di Insidioso93 il martedì 31 agosto 2010, 17:35, modificato 1 volta in totale.
Insidioso93
- il_muflone
- Tenace Tecnocrate

- Messaggi: 18878
- Iscrizione: venerdì 1 maggio 2009, 15:31
- Desktop: GNOME Shell
- Distribuzione: Arch Linux x86_64
- Località: Profondo sud
- Contatti:
Re: Spiegazione su variabili Shell
ho solo copiato quel che hai scritto tu
invece di
VAR1=`expr $1 + $2`
puoi usare
VAR1=$(expr $1 + $2)
fa la stessa cosa ma è più facile sia da scrivere che da leggere
invece di
VAR1=`expr $1 + $2`
puoi usare
VAR1=$(expr $1 + $2)
fa la stessa cosa ma è più facile sia da scrivere che da leggere
http://www.muflone.com - I miei contatti e i miei progetti - La guida completa a VirtualBox
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
Non mandatemi messaggi privati per chiedere aiuto, li cancello senza rispondere nemmeno.
Re: Spiegazione su variabili Shell
mi iscrivo 
You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Re: Spiegazione su variabili Shell
Ho ancora una domanda...quindi il comando set (di cui avevo parlato sopra) oltre a permettere di vedere le variabili d'ambiente definite dall'utente e di default permette did "riempire" le variaili $1 ecc ossia $@ con gli argomenti passati dal programma al terminale, in pratica fa l'opposto...
giusto?
giusto?
Insidioso93
Re: Spiegazione su variabili Shell
che l'argomento mi interessa, mi 'scrivo' in modo da avere gli sviluppi via mail e da poter rintracciare in futuro il 3d dalla mia mailInsidioso93 ha scritto:cosa significa?DaNieL85 ha scritto: mi iscrivo![]()
You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
- Insidioso93
- Scoppiettante Seguace

- Messaggi: 442
- Iscrizione: domenica 27 giugno 2010, 20:33
- Località: Milano
Re: Spiegazione su variabili Shell
Sì, set permette anche di modificare i parametri posizionali dello script. Vedi un esempio di applicazione qui: http://www.pluto.it/files/ildp/guide/ab ... tml#SETREFInsidioso93 ha scritto: Ho ancora una domanda...quindi il comando set (di cui avevo parlato sopra) oltre a permettere di vedere le variabili d'ambiente definite dall'utente e di default permette did "riempire" le variaili $1 ecc ossia $@ con gli argomenti passati dal programma al terminale, in pratica fa l'opposto...
giusto?
Se vuoi ricevere le notifiche via mail basta premere il pulsanti NOTIFICA, affianco a RISPOSTA, senza bisogno di scrivere nulla nel threadDaNieL85 ha scritto:che l'argomento mi interessa, mi 'scrivo' in modo da avere gli sviluppi via mail e da poter rintracciare in futuro il 3d dalla mia mailInsidioso93 ha scritto:cosa significa?DaNieL85 ha scritto: mi iscrivo![]()
(si, sono pigro)
Il mio blog su Ubuntu | Script per vedere canali RAI in diretta senza browser (discussione)
Quando devi inserire nei messaggi del codice usa il tag code, è il pulsante # sopra le emoticon: [code]inserisci il testo qui[/code]
Quando devi inserire nei messaggi del codice usa il tag code, è il pulsante # sopra le emoticon: [code]inserisci il testo qui[/code]
Re: Spiegazione su variabili Shell
mi piace scriverlo, è un pò come "vi stò osservando"Elrond ha scritto:Sì, set permette anche di modificare i parametri posizionali dello script. Vedi un esempio di applicazione qui: http://www.pluto.it/files/ildp/guide/ab ... tml#SETREFInsidioso93 ha scritto: Ho ancora una domanda...quindi il comando set (di cui avevo parlato sopra) oltre a permettere di vedere le variabili d'ambiente definite dall'utente e di default permette did "riempire" le variaili $1 ecc ossia $@ con gli argomenti passati dal programma al terminale, in pratica fa l'opposto...
giusto?
Se vuoi ricevere le notifiche via mail basta premere il pulsanti NOTIFICA, affianco a RISPOSTA, senza bisogno di scrivere nulla nel threadDaNieL85 ha scritto:che l'argomento mi interessa, mi 'scrivo' in modo da avere gli sviluppi via mail e da poter rintracciare in futuro il 3d dalla mia mailInsidioso93 ha scritto:cosa significa?DaNieL85 ha scritto: mi iscrivo![]()
(si, sono pigro)
You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
Chi c’è in linea
Visualizzano questa sezione: Majestic-12 [Bot] e 3 ospiti
