Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Eckige Klammern in Scripten

Frage Entwicklung Batch & Shell

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

27.12.2013, aktualisiert 12:54 Uhr, 1864 Aufrufe, 6 Kommentare

Hi und frohe Weihnachten!

Nach längerer Abstinenz habe ich mal wieder eine Frage (ich muss arbeiten ;-D)

Bei der Analyse eines Scriptes bin ich über folgendes gestolpert:

01.
IF [%UMGEB%]==[] GOTO ERROR_SCRIPT
was auch wunderbar funktioniert. Bisher kannte ich nur die Variante

01.
IF "%UMGEB%"=="" GOTO ERROR_SCRIPT
Generell lassen sich die [] ja nicht als "Ersatz" für "" nutzen, ein Test mit

01.
SET [TEST=blablabla]
hat im Gegensatz zu

01.
SET "TEST=blablabla"
nicht funktioniert.

Bisher kannte ich diese Klammern nur als Platzhalter in Beschreibungen aber nicht als nutzbare Parameter in einem Script. Da ich nun verwirrt bin, wer kann mich erhellen??

Danke schon mal voraus ...
Nagus
Mitglied: Endoro
LÖSUNG 27.12.2013, aktualisiert um 12:54 Uhr
Hey,
beim Vergleichen mit poison characters helfen nur Zollzeichen:
01.
if [&&]==[&&] echo true
gruss.
Bitte warten ..
Mitglied: bastla
LÖSUNG 27.12.2013, aktualisiert um 12:54 Uhr
Hallo Nagus!

Zumeist wird eine derartige Schreibweise für die Prüfung von Aufrufparametern (%1, %2, etc) verwendet - in Deinem konkreten Beispiel würde ich eher
if not defined UMGEB goto ERROR_SCRIPT
verwenden ...

... ansonsten kannst Du allerdings die eckigen Klammern durch (fast) beliebige andere Zeichen ersezten - funktionieren würde also etwa auch:
01.
if -%UMGEB%+==-+ goto ERROR_SCRIPT 
02.
if #%UMGEB%#==## goto ERROR_SCRIPT 
03.
if _%UMGEB%_==__ goto ERROR_SCRIPT 
04.
REM ...
- diese zusätzlichen Zeichen sorgen einfach nur dafür, dass sich auf keiner Seite des Vergleichs mit == "nichts" befindet ...

Grüße
bastla
Bitte warten ..
Mitglied: Nagus
27.12.2013 um 12:57 Uhr
Hi Bastla,

Danke! Wie immer schneller als der Schall und vollständig!

Gruß
Nagus
Bitte warten ..
Mitglied: Nagus
27.12.2013 um 12:58 Uhr
Danke Endoro!
Bitte warten ..
Mitglied: pieh-ejdsch
LÖSUNG 27.12.2013, aktualisiert 18.02.2014
Moin Nagus,

Der Vergleich ist WAHR, WENN die Variable Umgeb nicht gesetzt ist - also leer.
IF [%UMGEB%]==[] GOTO ERROR_SCRIPT 
 rem ergibt die Zeile im Klartext 
IF []==[] GOTO ERROR_SCRIPT
Der Inhalt der Variable darf keine Sonderzeichen enthalten.
Im Gegensatz dazu - den selben Effekt erreichst Du mit Überprüfung der Definition von Variablen der Inhalt ist egall.
IF not DEFINED Umgeb goto ERROR_SCRIPT
Wenn die Variable auf nur gültigen Inhalt geprüft werden sollte also auch keine Leerzeichen oder TAB wurde nur ein Zeichen und keine Umschliessenden verwendet.
set "Umgeb= " 
if %umgeb%.==. goto Error_script 
 rem wird Aufgelöst zu 
if .==. goto Error_script
Die eckigen Klammern werden als optionale Angaben [nutzbare Parameter] für Scripthilfen verwendet.

Wenn ein Leerzeichen oder andere SonderZeichen in der Variable erwartet werden, dann werden die Anführungszeichen verwendet um die Befehlszeile während der Ausführung stabil zu halten. Zeichenfolge1 sowie Zeichenfolge2 werden als maskierte Werte innerhalb der Anführungszeichen gesehen und nicht als Befehlsteile verwendet.
set "Var=Hallo Echo" 
if "%Var%"=="" goto Error_Script
[OT]
...oh etwas spät:
[/OT]

GrußPhil
Bitte warten ..
Mitglied: Nagus
18.02.2014 um 21:09 Uhr
Auch von mir etwas spät: Danke! ;-D
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit Powershell Daten löschen, die eckige Klammern im Namen haben (2)

Frage von arduino zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...