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)
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)
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
Anmeldungsdatum: 25. Mai 2006
Beiträge: 6411
|
|
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
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)
Anmeldungsdatum: 13. Dezember 2009
Beiträge: 812
|
vielen dank!
damit hats geklappt: export time=$(date +%T)
hast mir sehr geholfen!
|
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)
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)
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.
|