ubuntuusers.de

Befehl als Variable speichern

Status: Gelöst | Ubuntu-Version: Kubuntu 10.04 (Lucid Lynx)
Antworten |

Budada_Bubladend

Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

Hallo Leute,

ich hab mal ne Frage, die mir grad echt Kopfzerbrechen bereitet. Wie speichere ich einen Befehl als Variable? Denn wenn ich Beispielsweise nur variable='uptime' schreibe, dann wird ja nur uptime ausgegeben aber nicht der inhalt des Befehls.

Danke schon mal im voraus

Lg BB

prometheus0815

Anmeldungsdatum:
12. Juni 2006

Beiträge: 7478

Funktioniert astrein.

prometheus@bigbox:~$ export MYTESTVAR=uptime
prometheus@bigbox:~$ $MYTESTVAR
 11:39:26 up  2:20,  2 users,  load average: 0.25, 0.22, 0.19

Budada_Bubladend

(Themenstarter)
Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

Funktioniert astrein.

mhm aber nicht mit date +%T! vermutlich, weil ich ein Parameter drangehängt hab... kannst du mir da auch helfen? danke schonmal für deine Bemühungen

prometheus0815

Anmeldungsdatum:
12. Juni 2006

Beiträge: 7478

Auch kein Problem. Wegen des Leerzeichens musst Du den Wert natürlich kapseln, aber das ist Dir ausweislich Deines ersten Beitrags ja schon klar.

prometheus@bigbox:~$ export MYTESTVAR='date +%T'
prometheus@bigbox:~$ $MYTESTVAR
11:49:10

Budada_Bubladend

(Themenstarter)
Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

prometheus@bigbox:~$ export MYTESTVAR='date +%T'

mhm also die Variable gibt mir die Uhrzeit aus! Aber nicht im Echo:

export time='date +%T'
echo "Uhrzeit: $time "
Uhrzeit: date +%T 

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

time=$(date +%T)

Gruß

prometheus0815

Anmeldungsdatum:
12. Juni 2006

Beiträge: 7478

xabbuh schrieb:

time=$(date +%T)

Gruß

Du leitest die Ausgabe des Befehls in die Variable um. Dann hast Du allerdings die Uhrzeit zu diesem Zeitpunkt, nicht die zum Zeitpunkt des Variablenaufrufs. Gewünscht war der Befehl in der Variable, nicht dessen Ausgabe. 😉

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Soll denn dann die aktuelle Uhrzeit, oder die Zeit, als die Variable deklariert wurde, ausgegeben werden?

export time=$(date +%T)
alias zeit="date +%T"
sleep (10000)
echo "Uhrzeit: " $time 
zeit

Budada_Bubladend

(Themenstarter)
Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

vielen dank! damit hats geklappt:

export time=$(date +%T)

hast mir sehr geholfen!

Zombie_im_Bademantel

Avatar von Zombie_im_Bademantel

Anmeldungsdatum:
13. April 2005

Beiträge: 655

Dein ursprünglicher Fehler war übrigens, dass du ' statt [/mark] (backticks) benutzt hast.

Budada_Bubladend

(Themenstarter)
Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

Dein ursprünglicher Fehler war übrigens, dass du ' statt (backticks) benutzt hast.

vielen dank für den Hinweis.. in Zukunft bin ich hoffentlich schlauer =)

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Damit es zu der Verwechslung zwischen ` und ' gar nicht erst kommt, verwendest Du am besten die Syntax $(...) anstelle von `...`. Das ist ohnehin portabler.

Budada_Bubladend

(Themenstarter)
Avatar von Budada_Bubladend

Anmeldungsdatum:
13. Dezember 2009

Beiträge: 812

Damit es zu der Verwechslung zwischen und ' gar nicht erst kommt, verwendest Du am besten die Syntax $(...) anstelle von .... Das ist ohnehin portabler.

Achso, das is das gleiche! hab mich jetzt schon gewundert, warum user unknown das so gemacht hat! alles klar! jetzt hab ich auf jedenfall ne menge dazugelernt 😉 vielen dank!

prometheus0815

Anmeldungsdatum:
12. Juni 2006

Beiträge: 7478

Das Stichwort für weitere Recherchen lautet übrigens "Command Substitution". Im Übrigen hat Hello World Recht: Die $(...)-Schreibweise ist POSIX-konform und bietet den Vorteil, dass alles innerhalb der Klammern 1:1 expandiert wird. Bei der Backtick-Schreibweise haben einige Zeichen wie z.B. der Backslash \ andere Bedeutungen als üblich.

Antworten |