Variable über Shell in Datei schreiben

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo ich möchte eine Variable in eine Textdatei schreiben.
    Mit einer Zahl funktioniert es wunderbar, aber mit einer Variable funktioniert es einfach nicht!
    Habe schon ein Shell aus dem Forum Modifiziert aber es will nicht.

    Danke schon im vorraus!

  • Wert in Datei Schreiben:

    Code
    echo bla blub > /var/www/Shell/minwert


    Besser wäre aber so:

    Code
    echo "bla blub" > /var/www/Shell/minwert

    Wert aus Datei in Variable schreiben:

    Code
    var=$(cat /var/www/Shell/minwert)

    (bevorzuge ich)
    oder andere schreibweise aber macht das selbe:

    Code
    var=`cat /var/www/Shell/minwert`

    Inhalt einer Variable in eine Datei schreiben:

    Code
    echo $var > /var/www/Shell/minwert


    Besser wäre aber so:

    Code
    echo "$var" > /var/www/Shell/minwert


    Durch " > " wird aber der derzeitige Inhalt der Datei gelöscht und ersetzt. Möchtest du etwas hinzufügen dann verwende " >> "

  • Moin,

    im Grunde hast du alles richtig gemacht nur

    sudo -c 'befehl' öffnet eine shell und schleißt sie wieder. Was dann heißt wenn du erst

    sudo su -c 'read var </var/www/Shell/minwert' -> dann hat das funktioniert, aber Shell ist wieder dicht und jetzt
    sudo su -c 'echo $var' hast du eine neue SHell geöffnet und var soll was sein - gesetzt? Nö ;)

    Es könnte also so funktionieren:

    sudo su -c 'read var </var/www/Shell/minwert && echo $var' (Falls man hier nicht irgendwas escapen muss, was ich nicht glaube, aber man weiß ja nie )

    Gruß Lunepi

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • ...Ach genau - folgendes hab ich (und Lunepi nun auch) gar nicht beachtet :blush:


    Das kann nicht funktionieren:

    Code
    sudo su -c 'echo $var'

    Das Problem hierbei sind die '
    Innerhalb von ' kann keine $variable abgefragt werden, wenn du also Variablen nutzen willst musst du " verwenden (gänsefüßchen oder auch Anführungszeichen - oben):

    Code
    sudo su -c "echo $var"

    Und dann funktioniert das soweit auch... :angel:


    Aber wie Lunepi richtig erwähnt hat wird durch "su" eine neue Shell erstellt und anschließend wieder geschlossen. Die gesetzte Variable ist danach also nicht mehr verfügbar!

    Wieso willst du denn jedesmal "sudo su -c" ausführen :huh:
    Wieso führst du nicht einfach nur das bash Script über sudo aus :huh: Weil alle dadrin befindlichen Befehle werden dann auch mit root-Rechten ausgeführt..

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!