检查条件是否为假

Hi-*_*gel 37 unix linux bash shell conditional-statements

这似乎是一个简单的问题,我想知道为什么谷歌搜索没有提供任何帮助 - 也不是在StackOverflow,也不是在教程中.我只需要使用bash检查条件是否为假.

我发现我试过的

if ! [ 0==2 ]; then echo Hello; fi
Run Code Online (Sandbox Code Playgroud)

if [ ! 0==2 ]; then echo Hello; fi 
Run Code Online (Sandbox Code Playgroud)

他们都没有打印Hello.

我发现只有两个类似的问题,但两种情况下的最终答案都是重组代码,不使用"错误"条件.

woj*_*iii 63

你的意思是:

if ! [ 0 == 2 ]; then
  echo Hello;
fi
Run Code Online (Sandbox Code Playgroud)

你在相等运算符周围缺乏空间.

这可能是阅读http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html的时候 - 尤其是关于if then else和运算符的部分.我在编写脚本时通常会打开它.

  • 这是遗留的shell语法,它对于空格很脆弱.现在没理由使用. (2认同)
  • @YagamyLight可能是因为`test`操作符`[...]`检查表达式."0 == 0"不是一个操作,而是一个表达式.尝试做`[gfhjg]; echo $?`它将以0( - > true)回答,就像你写'[1 == 1]; echo $?`,同时如果你写`[1 == 2]; echo $?`它会回答1( - > false) (2认同)

Red*_*edX 10

对于数学评估,请使用(( ))bash.用于文字使用[[ ]].

if (( $i == 0 )); then
  echo "i is 0"
else
  echo "i is unequal 0"
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多关于bash中比较运算符的内容

更多关于双括号