[gelöst] Wie macht man "set -e" rückgängig?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
DaCoda
Beiträge: 172
Registriert: 09.07.2019 21:58:10

[gelöst] Wie macht man "set -e" rückgängig?

Beitrag von DaCoda » 20.04.2023 09:29:07

Am Anfang meines Skripts steht

Code: Alles auswählen

set -e
Damit beendet sich das Skript selbst, wenn ein Befehl einen Exit-Code ungleich 0 zurück gibt.

Meine Frage ist wie man das innerhalb des Skripts rückgängig macht, so dass ungleich 0 wieder erlaubt ist? Also z.B. in der Mitte des Skript möchte ich das ganze wieder so haben, dass Rückgabewerte ungleich 0 wieder erlaubt sind.
Zuletzt geändert von DaCoda am 20.04.2023 10:09:58, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie macht man "set -e" rückgängig?

Beitrag von Meillo » 20.04.2023 09:31:00

Code: Alles auswählen

set +e
Use ed once in a while!

DaCoda
Beiträge: 172
Registriert: 09.07.2019 21:58:10

Re: Wie macht man "set -e" rückgängig?

Beitrag von DaCoda » 20.04.2023 09:32:44

Meillo hat geschrieben: ↑ zum Beitrag ↑
20.04.2023 09:31:00

Code: Alles auswählen

set +e
Ah danke, genau das habe ich gesucht!

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie macht man "set -e" rückgängig?

Beitrag von Meillo » 20.04.2023 10:01:00

Hier noch eine kleine Anleitung, wie du dir in so Faellen das naechste Mal selber helfen kannst:

In der Manpage der Bash zum Abschnitt der BUILTINS gehen. (Wenn du `man bash' verwendest, kannst du mit Slash `/' suchen und mit `n' bzw. `N' vorwaerts bzw. rueckwaerts von Treffer zu Treffer springen.)

Dann zum Builtin `set' gehen. Dort findest du dann:
Manpage bash(1) hat geschrieben: set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]

[...]

-e Exit immediately if a pipeline (which may
consist of a single simple command), a
subshell command enclosed in parentheses,
or one of the commands executed as part of
a command list enclosed by braces (see
SHELL GRAMMAR above) exits with a non-zero
status. [...]

[...]

The options are off by default unless otherwise
noted. Using + rather than - causes these options
to be turned off. [...]
Die Manpage der Bash ist ziemlich lang, darum bringt das nur etwas, wenn man darin suchen kann. Wenn du dich im Pager im Terminal nicht wohl fuehlst, kannst du auch im Web nach der Manpage suchen und dann im Browser darin rumsuchen.

Meist lohnt es sich, sich ein paar Minuten zu nehmen, um den Text in der Manpage zu lesen. Wobei natuerlich auch jederzeit im Forum gefragt werden darf. ;-)


Btw: Du koenntest den Thread nun noch auf geloest setzen, indem du deinen Startbeitrag editierst und im Titel sowas wie ``[geloest]'' eintraegst.
Use ed once in a while!

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: [gelöst] Wie macht man "set -e" rückgängig?

Beitrag von tobo » 20.04.2023 10:20:45

Und weil die Manpage der Bash so ausführlich ist, ist es einfacher und übersichtlicher Bash-Builtins direkt über help anzusprechen:

Code: Alles auswählen

help set

JTH
Moderator
Beiträge: 3077
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: [gelöst] Wie macht man "set -e" rückgängig?

Beitrag von JTH » 20.04.2023 10:23:59

Für die Builtins gibt es noch eine eigene, direktere Hilfe:

Code: Alles auswählen

help set
Da bekommt man eine kürzere, manpage-artige Hilfe zu set, declare, mapfile, trap, while, if, case, exit, return und so weiter.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
Meillo
Moderator
Beiträge: 9224
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] Wie macht man "set -e" rückgängig?

Beitrag von Meillo » 20.04.2023 10:29:48

Was es nicht alles gibt! Danke fuer den Tipp. :THX:
Use ed once in a while!

Antworten