Negieren Sie eine boolesche Variable und weisen Sie sie einer neuen Variablen zu [Duplikat]
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 y
auf 1. Wie kann ich sie ändern, y
damit sie false
stattdessen ausgewertet wird?
Antworten
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 1
und 0
stattdessen verwenden oder sie (mit =
oder ==
) als Zeichenfolgen mit true
und vergleichen false
und so tun, als wären sie boolesch. Der Code wird besser lesbar sein, aber es handelt sich immer noch um Zeichenfolgen :-)