Sådan deaktiveres set -e for individuelle kommandoer i Bash scripts: En guide

Hvordan kan man nemt og elegant deaktivere set -e kommandoen for en individuel kommando i et bash script, og hvor er denne funktionalitet dokumenteret i Bash Reference Manual?

For at deaktivere set -e for en individuel kommando i et Bash script kan du bruge en subshell, en logisk OR eller midlertidigt deaktivere set -e med set +e før og set -e efter kommandoen.

Sådan deaktiveres set -e kommandoen for en individuel kommando i et Bash script

For at deaktivere set -e (også kendt som "errexit") for en individuel kommando i et Bash script, kan du benytte en af følgende metoder:

  • Brug af en subshell:

    Du kan placere den individuelle kommando i en subshell. Dette gøres ved at omslutte kommandoen med parenteser (). Dette vil sikre, at set -e ikke påvirker kommandoen inden for subshellen.

    (kommando)
  • Brug af en logisk OR:

    Du kan tilføje en logisk OR || efter kommandoen, efterfulgt af true. Dette vil forhindre set -e i at afslutte scriptet, hvis kommandoen fejler.

    kommando || true
  • Midlertidig deaktivering af set -e:

    Du kan midlertidigt deaktivere set -e ved at bruge set +e før kommandoen og derefter genaktivere det med set -e efter kommandoen.

    
    set +e
    kommando
    set -e
        

Dokumentation i Bash Reference Manual

Funktionaliteten af set -e og hvordan man deaktiverer det for individuelle kommandoer er dokumenteret i Bash Reference Manual under afsnittet "The Set Builtin". Du kan finde den relevante dokumentation ved at besøge følgende link:

Bash Reference Manual - The Set Builtin

Her er et uddrag fra manualen, der beskriver set -e:

"When this option is on, if a simple command fails for any of the reasons listed in Simple Command Expansion, and is not part of the compound list following a while or until keyword, part of an if statement, part of a && or || list, or if the command's return status is being inverted with !, then the shell shall immediately exit."