否定一个布尔变量并将其分配给一个新变量[重复]
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 $?
是什么意思吗?如果要使用返回值 0
和 not 0
,则需要将数字转换为所需的文本。祝你好运。
【参考方案1】:
Bash 没有变量布尔值的概念。其变量的值始终是字符串。在某些情况下,它们可以作为数字处理,但仅此而已。
您可以改用1
和0
,也可以将它们(与=
或==
)作为字符串与true
和false
进行比较,并假装它们是布尔值。代码将更具可读性,但它们仍然是字符串:-)
【讨论】:
嗯,我有点困惑,因为x=abc
(不带引号)是不允许的,但x=true
是。 Bash 是否总是在存储它们之前在内部将“布尔”值转换为它们的字符串表示形式?
@Ali 不,它没有。 true
和 false
都是常规字符串。
. 你是什么意思`x=abc` 是不允许的?在 bash 和我所知道的每个 shell 中,这样的赋值是最基本的操作。 x=abc; echo $x
应该产生abc
,而echo $?
返回0
,表示该命令执行成功。你在哪里找什么?我只是在这里猜测,但不要尝试在你的 shell 代码中实现你在另一种语言中发现的方便的语法。它会混淆未来的维护者等。祝你好运。以上是关于否定一个布尔变量并将其分配给一个新变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 Firebase Firestore 文档值分配给 swift 变量 [重复]
为数组中的变量分配新值的forEach循环不会替换变量的值[重复]