【发布时间】:2020-03-10 04:29:25
【问题描述】:
有人可以解释 bash 的“if”块的以下行为吗?
我使用以下简单代码检查 first_value 是否小于 second_value
first_value=67
second_value=2
if [[ "${first_value}" < "${second_value}" ]];
then
echo "Yes"
else
echo "No"
fi
问题是
如果 second_value 是 1,2,3,4,5,6,10,11,... 块将返回“No”
但如果 second_value 为 7、8、9,则该块将返回“Yes”(必须为“No”)
解决方法是使用“-lt”而不是“”,但我想了解“if”的这种行为堵塞。
bash 版本是“GNU bash,版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)”
操作系统是“CentOS Linux release 7.5.1804 (Core)”
【问题讨论】:
-
@Inian :这个问题不是重复的。 “重复”链接指向有关如何实现数值比较的讨论,但 OP 表示他至少知道如何正确执行此操作的一种可能性。相反,他想知道为什么他的错误方法导致了他观察到的行为。
-
@Inian:谢谢。我已删除我的评论并创建了一个答案。
-
嗨,维克,我的回答解决了你的问题吗? What should I do when someone answers my question
-
这与
if块无关;这与[[ ... ]]命令有关,它不是 部分if块的语法。 -
bash 可以直接从提示符处提供文档:输入
help [[然后help test
标签: bash if-statement syntax