Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Script semplice

  1. #1
    Utente di HTML.it L'avatar di inc40
    Registrato dal
    Sep 2004
    Messaggi
    319

    Script semplice

    Salve,
    devo creare un semplicissimo script di shell che prende in input due parametri, ossia "name" e "value", e setta a "value" il valore della variabile di ambiente di nome "name". Potreste aiutarmi?

    Grazie
    Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.

  2. #2

  3. #3
    Utente di HTML.it L'avatar di inc40
    Registrato dal
    Sep 2004
    Messaggi
    319
    Grazie per il supporto sacarde...purtroppo ho ancora qualche problema

    1)
    Se dal terminale faccio:
    codice:
       
    var=nuovavariabile
    export var
    e poi mi creo il seguente script:
    codice:
    #!/bin/sh
    echo $var
    l'output dello script è correttamente nuovavariabile, mentre se successivamente creo lo script
    codice:
    #!/bin/sh
    unset var
    var=nuovavariabile
    export var
    e poi dal terminale faccio
    codice:
    echo $var
    l'output è vuoto. Come mai export fatto nello script non funziona?


    2)
    Ho creato lo script per risolvere il problema iniziale (con il quale ho aperto la nuova discussione) nel seguente modo:
    codice:
    #!/bin/sh
    $1=$2 
    export $1
    dopodiché faccio chmod 700 semplice.sh, e quando dal terminale eseguo ./semplice.sh PWD nuovapwd per assegnare alla variabile PWD il valore nuovapwd mi viene restituito
    codice:
    	
    ./semplice.sh: 2: PWD=nuovapwd: not found
    Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746

    Re: Script semplice

    Originariamente inviato da inc40
    Salve,
    devo creare un semplicissimo script di shell che prende in input due parametri, ossia "name" e "value", e setta a "value" il valore della variabile di ambiente di nome "name". Potreste aiutarmi?

    Grazie
    non credo tu possa farlo: puoi (ri)definire una variabile
    in uno script, ma sarà sempre una (ridefinizione di) variabile
    *locale*, in quanto eseguita in una sub-shell...il valore originario
    sarà recuperato al termine dello script

    comunque, se anche si potesse, ti consiglierei di non farlo: chi vuole modificare
    il valore di una variabile d'ambiente (e quindi generalmente visibile da tutti i
    programmi avviati nella (sub-)shell in questione) è bene che lo faccia esplicitamente,
    nel modo canonico


  5. #5
    Utente di HTML.it L'avatar di inc40
    Registrato dal
    Sep 2004
    Messaggi
    319

    Re: Re: Script semplice

    Originariamente inviato da U-bahn
    ...
    comunque, se anche si potesse, ti consiglierei di non farlo:
    ...
    Magari potessi non farlo...purtroppo è un "esercizio" che devo fare per forza
    Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.

  6. #6
    Utente di HTML.it L'avatar di inc40
    Registrato dal
    Sep 2004
    Messaggi
    319

    Re: Script semplice

    Originariamente inviato da inc40
    Salve,
    devo creare un semplicissimo script di shell che prende in input due parametri, ossia "name" e "value", e setta a "value" il valore della variabile di ambiente di nome "name". Potreste aiutarmi?

    Grazie
    Semplifico il problema...voglio creare uno script che prende in input due parametri, "variabile" e "valore" ed effettua l'assegnamento variabile=valore.
    Il contenuto del mio script è un semplicissimo
    codice:
    $1=$2
    ma quando lo eseguo chiamando
    codice:
    mioscript miavariabile miovalore
    mi viene restituito
    codice:
    miavariabile=miovalore: not found
    Qual è il problema?
    Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.

  7. #7
    nome_variabile_seza_dollaro=$2

  8. #8
    Se esegui lo script normalmente come ha già detto U-bahn, viene eseguito in una subshell. Export funziona da shell padre a shell figlio, e NON vice versa. Per questo, uno script eseguito in una certa shell non potrà mai modificarene le variabili.
    Prova ad utilizzare il comando source (o semplicemente "."): anzichè eseguire lo script in una subshell lo esegue nell'ambiente chiamante: in questo modo lo script può modificare ogni variabile della shell che lo richiama, visto che eseguito da lei stessa e non da una subshell.
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  9. #9
    Utente di HTML.it L'avatar di inc40
    Registrato dal
    Sep 2004
    Messaggi
    319
    Originariamente inviato da GreyFox86
    Se esegui lo script normalmente come ha già detto U-bahn, viene eseguito in una subshell. Export funziona da shell padre a shell figlio, e NON vice versa. Per questo, uno script eseguito in una certa shell non potrà mai modificarene le variabili.
    Prova ad utilizzare il comando source (o semplicemente "."): anzichè eseguire lo script in una subshell lo esegue nell'ambiente chiamante: in questo modo lo script può modificare ogni variabile della shell che lo richiama, visto che eseguito da lei stessa e non da una subshell.
    Grazie per il tuo supporto GreyFox86...purtroppo non conosco i comandi source e "." Ho provato a dare un man source ma mi dice che non c'è nessuna entry corrispondente (come mai?)

    Potresti indicarmi come utilizzare tali comandi?

    Grazie
    Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.

  10. #10
    è facile, semplicemente source script.sh [arogomenti]
    "." è esattamente la stessa cosa di source.
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.