Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[OT] Bash

0 views
Skip to first unread message

Fabio La Farcioli

unread,
Apr 18, 2007, 3:01:15 AM4/18/07
to

-- Buongiorno a tutti,
    ho piccolo problema con uno script bash....e non riesco a capire dove sbaglio. La parte di script che mi da problemi è questa:

    ----------------------------------
    #!/bin/bash
    A=$(( $A + 1 ))
    echo $A
    ----------------------------------

    Praticamente io avrei bisogno di incrementare il valore di A, a cui ho assegnato il valore 1 tramite "export A=1" direttamente dalla shell

    Però a ogni interazione dello script il valore di $A rimane sempre 1.

    Dove sbaglio?? Scusate forse per la banalità....ma è da poco che ho a che fare con Shell Scripting

Grazie Mille...buona giornata a tutti
   

   

 


Molino Alimonti S.p.A.

Fabio La Farcioli

Ufficio EDP

66026 Ortona (CH) - Italy

Phone: +39.(0)85.90510315 - Fax: +39(0)85.9032378

www.molinoalimonti.com - email: fabio.la...@molinoalimonti.com 

 


"Ai sensi del Codice della Privacy, D.Lgs.n.196/2003, il contenuto di questa mail è coperto dal vincolo di riservatezza. Qualsiasi soggetto diverso dal destinatario è tenuto ad avvertire il mittente e ad astenersi inoltre, dall'utilizzo e comunque dal divulgare in tutto o in parte il suo contenuto."

This e-mail is confidential and may contain privileged information.  If you are not the addressee or if you have received the e-mail in error, it may be unlawful for you to read, copy, distribute, disclose or otherwise use the information which it contains.  Under these circumstances, please notify us immediately by returning this mail to in...@molinoalimonti.com  and deleting this e-mail from your system.


 

 

Federico Di Gregorio

unread,
Apr 18, 2007, 3:31:58 AM4/18/07
to
Il giorno mer, 18/04/2007 alle 08.51 +0200, Fabio La Farcioli ha
scritto:

>
> -- Buongiorno a tutti,
> ho piccolo problema con uno script bash....e non riesco a capire
> dove sbaglio. La parte di script che mi da problemi è questa:
>
> ----------------------------------
> #!/bin/bash
> A=$(( $A + 1 ))
> echo $A
> ----------------------------------
>
> Praticamente io avrei bisogno di incrementare il valore di A, a
> cui ho assegnato il valore 1 tramite "export A=1" direttamente dalla
> shell
>
> Però a ogni interazione dello script il valore di $A rimane sempre
> 1.
>
> Dove sbaglio?? Scusate forse per la banalità....ma è da poco che
> ho a che fare con Shell Scripting

Il programma in bash incrementa il suo valore di A, non il valore che
A ha nell'ambiente. Se vuoi cambiare il valore di A devi fare:

export A=`tuo_script.sh`

--
Federico Di Gregorio http://people.initd.org/fog
Debian GNU/Linux Developer f...@debian.org
INIT.D Developer f...@initd.org
Having paid our respects to the dead (Taligent), nearly dead
(Objective-C) and legendary (Symbolics), let's start digging
into the features that make Python a great language for mix-in
programming. -- Chuck Esterbrook

signature.asc

Fabio La Farcioli

unread,
Apr 18, 2007, 3:50:06 AM4/18/07
to
Federico Di Gregorio ha scritto:
Il giorno mer, 18/04/2007 alle 08.51 +0200, Fabio La Farcioli ha
scritto:
  
-- Buongiorno a tutti,
    ho piccolo problema con uno script bash....e non riesco a capire
dove sbaglio. La parte di script che mi da problemi è questa:

    ----------------------------------
    #!/bin/bash
    A=$(( $A + 1 ))
    echo $A
    ----------------------------------

    Praticamente io avrei bisogno di incrementare il valore di A, a
cui ho assegnato il valore 1 tramite "export A=1" direttamente dalla
shell

    Però a ogni interazione dello script il valore di $A rimane sempre
1.

    Dove sbaglio?? Scusate forse per la banalità....ma è da poco che
ho a che fare con Shell Scripting
    
Il programma in bash incrementa il suo valore di A, non il valore che
A ha nell'ambiente. Se vuoi cambiare il valore di A devi fare:

export A=`tuo_script.sh`

  


-- Quindi con:

    ------------------------------

    !/bin/bash
   
    A=$(( $A + 1 ))
    export A
    echo $A
    -------------------------------

    dovrei riuscire ad assegnarli quel valore ad A nell'ambiente ??

    Ho provato cosi...ma se provo a farmi restituire il valore di A con "env"...il valore è sempre 0! Mentre come output dello script ricevo sempre 1...

Mattia

unread,
Apr 18, 2007, 7:50:09 AM4/18/07
to
On Wed, 18 Apr 2007 09:48:28 +0200
Fabio La Farcioli <fabio.la...@molinoalimonti.com> wrote:

> Ho provato cosi...ma se provo a farmi restituire il valore di A con
> "env"...il valore è sempre 0! Mentre come output dello script ricevo
> sempre 1...

Te lo dico per esperienza personale :): spiega esattamente cosa vuoi
fare; chi chiama chi, chi cambia cosa, chi deve vedere una certa
variabile...

Neon

unread,
Apr 18, 2007, 8:10:09 AM4/18/07
to
On 4/18/07, Fabio La Farcioli <fabio.la...@molinoalimonti.com> wrote:
> -- Buongiorno a tutti,
> ho piccolo problema con uno script bash....e non riesco a capire dove
> sbaglio. La parte di script che mi da problemi è questa:
>
> ----------------------------------
> #!/bin/bash
> A=$(( $A + 1 ))
> echo $A
> ----------------------------------

prova con

#!/bin/bash
A=$(($A+1))
echo $A

senza spazi

dovrebbe funzionare!

Ciao!

--
Neon
Powered by debian Sid

http://www.kerneler.org

Luca Bruno

unread,
Apr 18, 2007, 9:00:27 AM4/18/07
to
Fabio La Farcioli scrisse:

> dovrei riuscire ad assegnarli quel valore ad A nell'ambiente ??
>
> Ho provato cosi...ma se provo a farmi restituire il valore di A
> con "env"...il valore è sempre 0! Mentre come output dello script
> ricevo sempre 1...

Credo che sia perchè lo script è invocata in una subshell, e
chiaramente modifica le variabili di ambiente di quella e non di quella
padre.

Se segui esattamente quel che dice fog dovrebbe funzionare.

Ciao, Luca

--
.''`. ** Debian GNU/Linux ** | Luca Bruno
: :' : The Universal O.S. | luca.br(AT)uno.it
`. `'` | GPG Key ID: 3BFB9FB3
`- http://www.debian.org | Proud Debian GNU/Linux User

Fabio La Farcioli

unread,
Apr 18, 2007, 9:20:12 AM4/18/07
to
NN_il_Confusionario ha scritto:
On Wed, Apr 18, 2007 at 09:48:28AM +0200, Fabio La Farcioli wrote:
  
   dovrei riuscire ad assegnarli quel valore ad A nell'ambiente ??
    
no. Lo script eseguito come eseguibile vienesempre eseguito da una
subshell (quella definita dalla prima riga #!/bin/bash dello script) e
una subshell non puo` mai (tranne porcate tipo accesso diretto alla
memoria da root) modificare l'ambiente della shell di cui e` subshell.

Devi interpretare lo script come

. /path/al/tuo/script

ovvero 

source /path/al/tuo/script

(nonta che per questo NON serve che /path/al/tuo/script sia eseguibile)
e _non_ eseguire lo script come

/path/al/tuo/script

  


-- Ecco ora funziona...
   
    Prima di provare questo metodo, avevo risolto salvando il valore della variabile in un file....voi che di dite...è meglio salvare la variabile in un file o in un variabile d'ambiente??

    Considerando che lo script dovrà girare su un server, considerando anche l'ipotesi di un reboot...e quindi la perdita del valore della variabile....

    Cosa mi consigliate???
0 new messages