[Bash] Globale Variable aus einem Bash Skript heraus ändern?!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von osiris, 14. April 2012 .

  1. 14. April 2012
    Globale Variable aus einem Bash Skript heraus ändern?!

    Hi,

    ich hab folgende Aufgabenstellung:

    Ich muss ein Bash Skript schreiben, welches eine gewisse Shell-Variable (Parameter 1) öffnet, diese bis zu einem gewissen Zeichen (Parameter 2) löscht und somit eine neue Shell Variable erstellt.

    Praktisch:
    ./skript Path :

    Die Variable Path wird geöffnet, der erste Wert bis zu den ersten : wird gelöscht und die Variable so gespeichert.
    Wenn ich danach die Variable Path mit echo $PATH ausgebe, gibts die Variable eben ohne den ersten Teil wie vor dem ausführen.

    Das ist doch aus einem Shell Skript heraus nicht möglich, oder?
     
  2. 14. April 2012
    AW: Globale Variable aus einem Bash Skript heraus ändern?!

    Geht soweit ich weiß nicht durch das "normale" ausführen eines Bash-Script...

    Du musst das wie folgt starten:
    Code:
    . scriptname.sh
    Und per export dann die Variable ändern.. Dadurch erhälst du die Umgebungsvariablen..
    Das gleiche wird zB mit der .bashrc auch gemacht

    MfG
     
  3. 14. April 2012
    AW: Globale Variable aus einem Bash Skript heraus ändern?!

    Danke schonmal.

    Hab jetzt per export $1=$arg2; das ganze exportiert im Skript.
    $1 ist dabei der eingegebener Parameter.
    arg2=`cat file2` wobei im file2 die Variable ohne den ersten Teil steht.


    Allerdings geht das Terminal einfach zu, wenn ich das Skript per ". skript.sh" aufrufe?!

    E:/ Um das ganze zu verdeutlichen:

    Mein Skript fragt den Benutzer nach der zu verändernden Shell Variable, bis wohin der Anfang gelöscht werden soll.
    Danach schneidet er mit Hilfe des cut Befehls das Ding zu, exportiert die Variable und gibt sie anschließend zur Kontrolle nochmal aus.
    Wenn ich jetzt das Skript normal ausführe, kommt am Ende das richtige Ergebnis raus. Allerdings wird durch das ./skript.sh öffnen, das Skript ja in einer Subshell geöffnet, die anschließend wieder geschlossen wird, ergo wird auch die Variable wieder gelöscht.
    Wenn ich das Skript per . skript.sh starte, schließt sich die gesamte Shell, das sollte sie aber nicht. Wie umgehe ich das?

    E:/

    Habs jetzt mit exec $SHELL -i gelöst. Ist zwar nicht die schönste Methode, aber funktioniert. Vielleicht weiß ja jemand, warum sich bei mir bei . skript.sh die ganze Shell schließt?!
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.