我是一名新手,正在努力让我的第一个“如果那么”语句发挥作用。我编造了一个完全胡说八道的情况来用作试验,但它不起作用。我已经阅读了大约一半关于如何格式化 if then 的描述,但我不知道我可能做错了什么。
我的脚本:
#!/bin/bash
if [ 10 > $1 ]
then
printf "Too big\n"
else
printf "Too small\n"
fi
我想我可以提供任何数字作为命令行的第一个参数,脚本会告诉我一个适当的答案。没有喜悦。我在命令行中得到的只是:
Johns-iMac:~ johnyoung$ ./test3 5
Too big
Johns-iMac:~ johnyoung$ ./test3 50
Too big
对于我一直在做的实践,这个脚本最终被称为“test3”
有任何机构可以帮助我吗?谢谢负载。
The >
in if [ 10 > $1 ]
在测试命令中被解释为输出重定向[
。您可以使用内置的 bash[[
]]
到数值比较。
#!/bin/bash
if [[ 10 > $1 ]]
then
printf "Too big\n"
else
printf "Too small\n"
fi
您还可以使用-gt
(比...更棒),-lt
(少于),-ge
(大于或等于)等数值比较:
if [[ 10 -gt $1 ]]
...
...
fi
or
if (( 10 > $1 ))
...
...
fi
一般来说,内置关键字[[
]]
应该优先于bash因为它不进行全局扩展或分词,并且与测试命令相比更不容易出错[
.
但缺点是[[
]]
并非所有 shell 都支持 test 命令[
受到所有 shell 的支持。
另请阅读:测试、[ 和 [[ 之间有什么区别?进行详细讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)