Bash Script Windows. Wie funktioniert genau DelayedExpansion in if else?
Guten Morgen allerseits,
ich verstehe nicht, wie DelayedExpansion in bash script funktioniert.
wenn ich zum beispiel folgende Code habe.
set var (Diese Variable ist nicht Integer sagen wir die ist zum Bsp. var = TIME)
set /A var1=wert
set /A var2=wert
set /A var3
if var1==0 && var2== (var3=20)
else if var1==0 (var3=var2)
else var3=var
Dann möchte ich diese Variable var3 irgendwo im Code nutzen aber es geht nicht angeblich muss ich DelayedExpansion nutzen aber ich verstehe wie ich es nutzen soll.
nur Ausrufezeichen (!) zu benutzen hilft nicht.
In andere Sprachen wie z.B Java, C oder Javascript ist ja Kindergarten Code aber hier verbirgt sich ganz andere Ansatz.
Kann mir jemand sagen, wie das Problem zu lösen ist?
Viele Dank im Voraus.
ich verstehe nicht, wie DelayedExpansion in bash script funktioniert.
wenn ich zum beispiel folgende Code habe.
set var (Diese Variable ist nicht Integer sagen wir die ist zum Bsp. var = TIME)
set /A var1=wert
set /A var2=wert
set /A var3
if var1==0 && var2== (var3=20)
else if var1==0 (var3=var2)
else var3=var
Dann möchte ich diese Variable var3 irgendwo im Code nutzen aber es geht nicht angeblich muss ich DelayedExpansion nutzen aber ich verstehe wie ich es nutzen soll.
nur Ausrufezeichen (!) zu benutzen hilft nicht.
In andere Sprachen wie z.B Java, C oder Javascript ist ja Kindergarten Code aber hier verbirgt sich ganz andere Ansatz.
Kann mir jemand sagen, wie das Problem zu lösen ist?
Viele Dank im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 572668
Url: https://administrator.de/forum/bash-script-windows-wie-funktioniert-genau-delayedexpansion-in-if-else-572668.html
Ausgedruckt am: 10.04.2025 um 12:04 Uhr
7 Kommentare
Neuester Kommentar
Hi Panda01!
das gleiche Problem hatte ich auch mal.
Schreib einfach setlocal EnableDelayedExpansion nach @echo off in dein programm, und dann kannst du das mit den ausrufezeichen machen.
Merk dir:
DelayedExpansion wurde erst 16 jahre nach Batch eingeführt, es ist also so als würdest du eine erweiterung benutzen, die du ja auch in anderen programmiersprachen am anfang definieren musst.
ich hoffe ich hab dir geholfen.
Schönen Tag dir!
das gleiche Problem hatte ich auch mal.
Schreib einfach setlocal EnableDelayedExpansion nach @echo off in dein programm, und dann kannst du das mit den ausrufezeichen machen.
Merk dir:
DelayedExpansion wurde erst 16 jahre nach Batch eingeführt, es ist also so als würdest du eine erweiterung benutzen, die du ja auch in anderen programmiersprachen am anfang definieren musst.
ich hoffe ich hab dir geholfen.
Schönen Tag dir!
PS: ein beispiel aus einem meiner scripte:
@echo off
setlocal EnableDelayedExpansion
for %%a in ("%~dp0*.cfg") do (
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ "%%~nxa"') do @(
for /L %%a in (1,1,1) do @if %%i==%%a @set ip=%%j
)
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ "%%~nxa"') do @(
for /L %%a in (2,1,2) do @if %%i==%%a @set private=%%j
)
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ "%%~nxa"') do @(
for /L %%a in (8,1,8) do @if %%i==%%a @set status=%%j
)
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ "%%~nxa"') do @(
for /L %%a in (9,1,9) do @if %%i==%%a @set info=%%j
)
if !private:~8!==false (
echo.
echo Name: %%~na [Local Server]
echo Status: !status:~7!
echo IP: !ip:~3!
echo Info: !info:~5!
)
)
....restlicher script...
Moin,
@Panda01: Meinst Du etwa Batch Skripting unter Windows?
Weil Basg Skripting gibt es unter Linux / Unix.
Und hier etwas Lesefutter bzgl. Windows Batch:
Gruss Penny.
@Panda01: Meinst Du etwa Batch Skripting unter Windows?
Weil Basg Skripting gibt es unter Linux / Unix.
Und hier etwas Lesefutter bzgl. Windows Batch:
- Windows Batch Grundlagen
- Batch - ein paar Basics die man kennen sollte
- Workshop Batch for Runaways - Part I
- Workshop Batch for Runaways - Part II
- Workshop Batch for Runaways - Part III
- HowTo - Wie man Subroutinen in Batchfiles erstellt
- Tutorial zur FOR-Schleife
Gruss Penny.
Dann bitte ändere den Titel Deiner Frage. - Danke.
Das kannst Du auch im Nachhinein machen.
Gruß
Panda01
Gruss Penny.
Das kannst Du auch im Nachhinein machen.
Gruß
Panda01
Gruss Penny.