Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash打印到屏幕,使用条件_Bash - Fatal编程技术网

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

使用bash打印到屏幕,使用条件,bash,Bash,输入: 我的输出是: number=5 if $number > 0; echo "Yes"; else echo "No";fi 我只想要是或否,那么语法有什么问题吗?如果需要命令(实际上是命令列表),而不是表达式。test命令就是您想要的。(您还缺少终止条件的then关键字。) 对于,更喜欢现代风格: if test "$number" -gt 0; then echo "Yes" else echo "No" fi 或使用布尔逻辑: 备选方案: ((number

输入:

我的输出是:

number=5
if $number > 0; echo "Yes"; else echo "No";fi

我只想要
,那么语法有什么问题吗?

如果
需要命令(实际上是命令列表),而不是表达式。
test
命令就是您想要的。(您还缺少终止条件的
then
关键字。)

对于,更喜欢现代风格:

if test "$number" -gt 0; then
    echo "Yes"
else
    echo "No"
fi
或使用布尔逻辑:

备选方案:

((number > 0)) && echo "Yes" || echo "No"

@SaltedPork注意到,
5>0
试图运行一个名为“5”的命令,输出到一个名为“0”的文件(因为这是
作为shell命令的一部分所做的)。“5”部分显然失败了,但它可能仍然创建了一个名为“0”的(空)文件。你可能想删除它…谢谢Gordon,我在那个目录中有很多标为0的文件!不要同时使用
&&
|
作为三元条件表达式;它只在这里起作用,因为
echo
很少有非零退出状态。一般来说,
a和&b|c
可以执行
c
,即使
a
成功,因为
b
可能失败。对两种相互排斥的情况使用
if
语句。我不知道
echo“a_string”
在语法良好的情况下会失败,但我同意,
if/then/else
解决方案更可靠/robust@GillesQuenot
echo
可能由于输出错误而失败(例如管道破裂、设备已满、配额错误、FD错误等). 这当然是一种罕见的情况,但这是可能的。
if ((number > 0)); then
    echo "Yes"
else
    echo "No"
fi
((number > 0)) && echo "Yes" || echo "No"
number=5
((number > 0)) && echo "Yes" || echo "No"