为什么两个空字符串比较不相等?

用户4385532
my@comp:~/wtfdir$ cat wtf.sh
str1=$(echo "")
str2=$(echo "")

if [ $str1 != $str2 ]; then
  echo "WTF?!?!"
fi
my@comp:~/wtfdir$ ./wtf.sh
WTF?!?!
my@comp:~/wtfdir$

WTF在这里进行?!

我是如何编写上述代码的:谷歌搜索“bash compare strings”把我带到了这个网站,它说:

您可以使用 if 语句在 bash 中检查两个字符串的相等和不相等。“==”用于检查相等性,“!=”用于检查字符串的不相等性。

然而我得到了上述内容?

我不明白什么?我究竟做错了什么?

查尔斯·达菲

您根本没有进行比较,因为您没有在必须使用引号的地方使用引号。请参阅http://shellcheck.net/关于SC2086 中未加引号的扩展的警告

如果两个字符串都为空,则:

[ $str1 != $str2 ]

...评估为...

[ != ]

...这是对字符串!=是否为非空的测试,这是真的。将您的代码更改为:

[ "$str1" != "$str2" ]

......和这些字符串的准确值实际上将通过传递给[命令


另一种选择是使用[[; BashFAQ #31bash-hackers' wiki 上条件表达式页面所述,这是扩展的 shell 语法(在 ksh、bash 和其他扩展 POSIX sh 标准的常见 shell 中),它抑制了让您绊倒的字符串拆分行为向上:

[[ $str1 != "$str2" ]]

...仅在右侧需要引号,即使是空字符串情况也不需要引号,但要防止右侧被视为全局(导致比较始终反映匹配如果str2='*')。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么两个相同的字符串不相等?

来自分类Dev

为什么我的两个元组包含以相同方式创建的字符串,而不相等?

来自分类Dev

为什么这两个字符串不相等?

来自分类Dev

Golang为什么这两个字符串不相等?

来自分类Dev

为什么这两个字符串不相等?

来自分类Dev

JavaScript中两个看似相等的字符串不相等

来自分类Dev

表示空格的两个相等的字符串在JS中不相等

来自分类Dev

两个相等的字符串在bash中计算为不相等

来自分类Dev

两个字符串相同,但比较时不相等

来自分类Dev

为什么两个相同的字符串变量不相等?是因为字节数组大小吗?

来自分类Java

为什么两个AtomicInteger不相等?

来自分类Dev

为什么这两个结构不相等?

来自分类Dev

为什么这些字符串不相等?

来自分类Dev

这些字符串为什么不相等?

来自分类Dev

为什么这些字符串不相等

来自分类Dev

相同字符串值的两个实例不相等

来自分类Dev

两个相同的字符串在 Python 中可以不相等吗?

来自分类Dev

两个字符串相等,但 python 说它们不相等

来自分类Dev

为什么在比较 python 中的字符串时,我的代码中出现“!=”不相等的错误?

来自分类Dev

为什么两个相等的对象在Angular 2中显示“不相等”

来自分类Dev

python如何在两个不相等大小的列之间匹配部分字符串

来自分类Dev

Google Apps脚本:为什么出现相等的字符串/值不相等

来自分类Java

如果字符串不相等,该如何比较?

来自分类Dev

为什么这两个表达式在bash中不相等?

来自分类Dev

F#:为什么这两个集合不相等?

来自分类Dev

为什么这两个表达式不相等?

来自分类Java

为什么两个List <Object []>在Java中不相等?

来自分类Dev

为什么这两个 Card 对象不相等?

来自分类Java

Java日历问题:为什么这两个日期不相等?

Related 相关文章

  1. 1

    为什么两个相同的字符串不相等?

  2. 2

    为什么我的两个元组包含以相同方式创建的字符串,而不相等?

  3. 3

    为什么这两个字符串不相等?

  4. 4

    Golang为什么这两个字符串不相等?

  5. 5

    为什么这两个字符串不相等?

  6. 6

    JavaScript中两个看似相等的字符串不相等

  7. 7

    表示空格的两个相等的字符串在JS中不相等

  8. 8

    两个相等的字符串在bash中计算为不相等

  9. 9

    两个字符串相同,但比较时不相等

  10. 10

    为什么两个相同的字符串变量不相等?是因为字节数组大小吗?

  11. 11

    为什么两个AtomicInteger不相等?

  12. 12

    为什么这两个结构不相等?

  13. 13

    为什么这些字符串不相等?

  14. 14

    这些字符串为什么不相等?

  15. 15

    为什么这些字符串不相等

  16. 16

    相同字符串值的两个实例不相等

  17. 17

    两个相同的字符串在 Python 中可以不相等吗?

  18. 18

    两个字符串相等,但 python 说它们不相等

  19. 19

    为什么在比较 python 中的字符串时,我的代码中出现“!=”不相等的错误?

  20. 20

    为什么两个相等的对象在Angular 2中显示“不相等”

  21. 21

    python如何在两个不相等大小的列之间匹配部分字符串

  22. 22

    Google Apps脚本:为什么出现相等的字符串/值不相等

  23. 23

    如果字符串不相等,该如何比较?

  24. 24

    为什么这两个表达式在bash中不相等?

  25. 25

    F#:为什么这两个集合不相等?

  26. 26

    为什么这两个表达式不相等?

  27. 27

    为什么两个List <Object []>在Java中不相等?

  28. 28

    为什么这两个 Card 对象不相等?

  29. 29

    Java日历问题:为什么这两个日期不相等?

热门标签

归档