否定一个布尔变量并将其分配给一个新变量[重复]

Posted

技术标签:

【中文标题】否定一个布尔变量并将其分配给一个新变量[重复]【英文标题】:Negate a boolean variable and assign it to a new variable [duplicate] 【发布时间】:2021-04-07 10:00:48 【问题描述】:

在 Bash 脚本中,我想定义一个布尔变量 y 来存储另一个布尔变量 x 的否定值。以下脚本,

#!/bin/bash

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

将变量 y 设置为 1。如何更改 y 使其计算结果为 false

【问题讨论】:

y=$(case "$x" in true ) echo false ;; * ) echo "Unknown Value for x=$x" 1>&2 ; echo "nonesuch" ;; esac) ?? 这个问题/答案是相关的:***.com/questions/41204576/… 你明白true ; echo $? 是什么意思吗?如果要使用返回值 0not 0,则需要将数字转换为所需的文本。祝你好运。 【参考方案1】:

Bash 没有变量布尔值的概念。其变量的值始终是字符串。在某些情况下,它们可以作为数字处理,但仅此而已。

您可以改用10,也可以将它们(与===)作为字符串与truefalse 进行比较,并假装它们是布尔值。代码将更具可读性,但它们仍然是字符串:-)

【讨论】:

嗯,我有点困惑,因为x=abc(不带引号)是不允许的,但x=true 是。 Bash 是否总是在存储它们之前在内部将“布尔”值转换为它们的字符串表示形式? @Ali 不,它没有。 truefalse 都是常规字符串。 . 你是什么意思`x=abc` 是不允许的?在 bash 和我所知道的每个 shell 中,这样的赋值是最基本的操作。 x=abc; echo $x应该产生abc,而echo $?返回0,表示该命令执行成功。你在哪里找什么?我只是在这里猜测,但不要尝试在你的 shell 代码中实现你在另一种语言中发现的方便的语法。它会混淆未来的维护者等。祝你好运。

以上是关于否定一个布尔变量并将其分配给一个新变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

多次引用数组中的元素并将该元素分配给变量[重复]

将 Firebase Firestore 文档值分配给 swift 变量 [重复]

为数组中的变量分配新值的forEach循环不会替换变量的值[重复]

获取 Javascript 变量并将其传递给 PHP 函数 [重复]

断言失败:布尔表达式不能为空(即使布尔变量分配给真/假)

无法在getDocuments querysnapshot(Swift)中将变量分配给Firebase数据[重复]