Negieren Sie eine boolesche Variable und weisen Sie sie einer neuen Variablen zu [Duplikat]

Dec 31 2020

In einem Bash-Skript möchte ich eine boolesche Variable definieren y, um den negierten Wert einer anderen booleschen Variablen zu speichern x. Das folgende Skript,

#!/bin/bash

x=true
y=$(( ! "${x}" ))
echo "${y}"

setzt die Variable yauf 1. Wie kann ich sie ändern, ydamit sie falsestattdessen ausgewertet wird?

Antworten

3 axiac Dec 31 2020 at 06:32

Bash hat nicht das Konzept von Booleschen Werten für Variablen. Die Werte seiner Variablen sind immer Zeichenfolgen. Sie können in einigen Kontexten als Zahlen behandelt werden, aber das ist alles, was es tun kann.

Sie können 1und 0stattdessen verwenden oder sie (mit =oder ==) als Zeichenfolgen mit trueund vergleichen falseund so tun, als wären sie boolesch. Der Code wird besser lesbar sein, aber es handelt sich immer noch um Zeichenfolgen :-)