Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Grundlegende Frage - Bash

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
gameace
Newbie
Newbie
Beiträge: 6
Registriert: 13. Nov 2004, 17:21

Grundlegende Frage - Bash

Beitrag von gameace »

Warum funktioniert eigentlich nicht
$(echo "irgendwas1")="irgendwas2" in der bash ?
Warum wird irgendwas1 nicht als variablennamen interpretiert?
Es gibt es dabei vielleicht einen anderen Weg?
Oder ist das einfach nur bei mir so... :oops: oder noch schlimmer hab ich wat falsch gemacht...?[/code]
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

wiel der "$" fehlt vor den Variablen :)
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
gameace
Newbie
Newbie
Beiträge: 6
Registriert: 13. Nov 2004, 17:21

Beitrag von gameace »

Wie meinst du das?
So $(echo "$irgendwas1")="irgendwas2" ?
dann wird "$irgendwas1" doch als variable interpretiert die es nicht gibt.
Ich möchte eigentlich das der Name der Variable die "irgendwas2" enthalten wird,den Namen hat der von echo ausgeben wird.
}-Tux-{
Hacker
Hacker
Beiträge: 698
Registriert: 12. Dez 2004, 19:54
Kontaktdaten:

Beitrag von }-Tux-{ »

Hi

mach es am besten so:

irgendetwas2=`echo $irgendetwas1`

So ist es am einfachsten, wie ich finde :)

mfg }-Tux-{
gameace
Newbie
Newbie
Beiträge: 6
Registriert: 13. Nov 2004, 17:21

Beitrag von gameace »

Ich schildere mal mein eigentlich Problem:

transfervar()
{
declare $1=$(cat $tmp$$) && export $1 && rm $tmp$$
}

Nun möchte ich gern über die Funktion hinaus auf diese Variable zugreifen,geht aber net.... :oops:
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

Die Lösung für dein erstes Beispiel lautet:

Code: Alles auswählen

eval $(echo irgendwas1)="irgendwas2"
Als Lösung für dein Funktion-Problem: Ersetze den befehl "declare" durch "eval". Der Befehl "declare" bewirkt, dass nur der funktion die Variable bekannt ist. Hierzu der Code (ich habe noch ein bisschen was hinzugefügt, dass es bei mir testweise richtig laufen kann):

Code: Alles auswählen

tmp=test.
echo irgendwas2 > $tmp$$

transfervar()
{
eval $1=$(cat $tmp$$) && export $1 && rm $tmp$$
}

transfervar irgendwas1
echo $irgendwas1
gameace
Newbie
Newbie
Beiträge: 6
Registriert: 13. Nov 2004, 17:21

Beitrag von gameace »

fettes merci :lol:
Antworten