Bash Variable True False if

Bedingte if-Prüfung auf True oder False in Bash

Wie man prüft, ob eine Bash-Variable True (false) ist mit if-Anweisungen in der Bash-Programmiersprache (Skriptsprache) für Linux-PCs und -Server. Ich mag es nicht, 'Optionen' in Bash-Funktionen zu implementieren. Also, wenn ich wirklich optionsähnliche Funktionalität innerhalb einer Funktion brauche, verwende ich lokale Variablen.

Shou Arisaka
2 Min. Lesezeit
10. Okt. 2025

Wie man prüft, ob eine Bash-Variable True (false) ist mit if-Anweisungen in der Bash-Programmiersprache (Skriptsprache) für Linux-PCs und -Server.

Ich mag es nicht, “Optionen” in Bash-Funktionen zu implementieren. Diejenigen, die Optionen implementiert haben, wissen, dass es etwa 60 Zeilen erfordert, nun, abhängig von der Anzahl. Also, wenn ich wirklich optionsähnliche Funktionalität innerhalb einer Funktion brauche, was mache ich? Ja, ich verwende lokale Variablen.

hoge(){

  # and more.. 

  if ( [[ "${show_hr}" == true ]] || [[ "${show_hr}" == false ]] ) && "${show_hr}" ; 
  then  
    horizonal_line
  fi 

  # and more..

}

Beim Ausführen einer Funktion wie der obigen, wenn Sie eine lokale Variable show_hr übergeben, wird sie innerhalb der Funktion verwendet. In diesem Beispiel werden die Befehle im if-Block ausgeführt, wenn Sie wie show_hr=true hoge ausführen. Wenn Sie false übergeben möchten, verwenden Sie show_hr= hoge oder show_hr=false hoge, und wenn Sie einen Wert übergeben möchten, verwenden Sie show_hr=value hoge.

Der obige if-Block validiert leicht, ob der Typ von show_hr boolean ist. Ohne diese Validierung, wenn zum Beispiel der Wert von show_hr kein Boolean-Wert ist, sondern foobar, erhalten Sie einen Fehler wie not found command: foobar. Also, nun, wenn Sie keine Validierung benötigen, ist der folgende Schreibstil in Ordnung. Nachdem ich es durchdacht habe, empfehle ich den obigen Schreibstil als den besten Ansatz.

hoge(){

  # and more.. 

  if "${show_hr}" ; 
  then  
    horizonal_line
  fi 

  # and more..

}

Ich kann die Vorteile von Typdeklarationssprachen wie Java sehen. Sie können Arrays plural machen, indem Sie das Suffix s hinzufügen, aber es gibt nicht wirklich eine klare Regel für Boolean-Werte. show_hr_boolean ist zu lang. Vielleicht ist es nicht schlecht, es wie Ruby mit show_hr? zu machen. Hmm.

Zusatz

Übrigens, wenn es true ist, wird sogar ein String zu true, aber wenn es false ist, wird ein String zu true. Beim Abrufen von Boolean-Werten aus JSON könnten Sie sie als Strings erhalten.

In solchen Fällen ist es gut, es zu evalen.

{
  "waked_up_once": "true"
}
if eval "$( cat "${CONFIG_JSON}" | parsejson '["waked_up_once"]' )" ; 
then 
  echo y 
fi 

Diesen Artikel teilen

Shou Arisaka 10. Okt. 2025

🔗 Links kopieren