使用bash使用条件打印到屏幕

Sal*_*ork 2 bash

输入:

number=5
if $number > 0; echo "Yes"; else echo "No";fi
Run Code Online (Sandbox Code Playgroud)

我的输出是:

bash: 5: command not found...
No
Run Code Online (Sandbox Code Playgroud)

我只想要Yes或者No,那么语法有什么问题?

che*_*ner 5

if需要命令(实际上是命令列表),而不是表达式.该test命令是你想要的.(您也缺少then关键字,它会终止条件.)

if test "$number" -gt 0; then
    echo "Yes"
else
    echo "No"
fi
Run Code Online (Sandbox Code Playgroud)

  • @SaltedPork注意,`5> 0`试图运行一个名为"5"的命令,输出到一个名为"0"的文件('因为那是`>`作为shell命令的一部分)."5"部分显然失败了,但它可能仍然创建了一个名为"0"的(空)文件.你可能想删除它.​​..... (2认同)

Gil*_*not 5

对于bash 算术,更喜欢现代风格:

if ((number > 0)); then
    echo "Yes"
else
    echo "No"
fi
Run Code Online (Sandbox Code Playgroud)

或使用布尔逻辑

((number > 0)) && echo "Yes" || echo "No"
Run Code Online (Sandbox Code Playgroud)