WinFuture-Forum.de: [bash] Prüfen, Ob Variable Existiert - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[bash] Prüfen, Ob Variable Existiert Ein kleines Dankeschön an die Community


#1 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 11. Mai 2010 - 23:38

Hallo,

hier ein Codeschnipsel, der vermutlich ab und zu ganz nützlich ist: Die Prüfung, ob eine Variable überhaupt existiert und - wenn sie es tut (und eine Stringvariable ist) - Inhalt hat (0 bei Zahlvariablen zählt als Inhalt!).

#/bin/bash																																										 
																																													
 # Parameter $1 ist Variablenname
 variableExists()																																								   
 {																																												  
	 var=$(eval echo \$"$1") # Indirekte Referenz
																																													
	 if [ ${var:-'UNDEFINED_VARIABLE'} == 'UNDEFINED_VARIABLE' ] # Wenn nicht definiert, dann auf vorgegeben Wert setzen.
		 then return 0 # false: Variable nicht definiert oder kein Inhalt
	else return 1 # true
 fi
 }



Zur Benutzung: Wenn ihr das Skript als variableExists abspeichert, könnt ihr es in euren eigenen Skripts wie folgt benutzen:
#!/bin/bash																																										
																																													
 . ./variableExists.sh # Includen. Das Leerzeichen zwischen den beiden Punkten ist wichtig!
																																													
 var="blah"
 variableExists var
 exists=$? # Status der letzten Aktion (Funktionsaufruf) abfragen
																																													
 if [ $exists -eq 1 ]; then echo Variable existiert; else echo Variable existiert NICHT; fi

0

Anzeige



#2 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.735
  • Beigetreten: 20. Juli 04
  • Reputation: 62
  • Geschlecht:Männlich
  • Wohnort:Stralsund

geschrieben 13. Mai 2010 - 07:16

Hmmm... Sieht kompliziert aus.

Habe ich irgendwas übersehen oder warum machst du es nicht einfach so?
#!/bin/bash

if [ $1 ]; then
	echo "Variable existiert!"
else
	echo "Variable existiert nicht!"
fi


Hab's jetzt nicht ausprobier, aber sollte imho funktionieren.

http://tldp.org/LDP/Bash-Beginners-Guide/h...sect_07_01.html

Dieser Beitrag wurde von sкavєи bearbeitet: 13. Mai 2010 - 07:24

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 14. Mai 2010 - 18:33

Wenn man das in eine Funktion auslagern will, so dass man einfach "variableExists myvar" schreiben kann, muss man aber schon mit den indirekten Referenzen arbeiten.

Beim zweiten Punkt hast du aber Recht. Hab noch mal nachgeforscht und ausprobiert. Die beiden Möglichkeiten führen zu den gleichen Ergebnissen. Auf diese Expansion-Sache bin ich nur ein paar mal beim Suchen gestoßen. Seltsam...

Dieser Beitrag wurde von Der Kenner bearbeitet: 14. Mai 2010 - 18:34

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0