Mar*_*rin 7 string bash comparison
我试图比较一个bash脚本中的两个字符串,我得到了非常奇怪的结果.
if [[ "010" < "01." ]]; then echo "Wrong"; else echo "OK"; fi
if [[ "010" < "01.0" ]]; then echo "Wrong"; else echo "OK"; fi
if [ "010" \< "01." ]; then echo "Wrong"; else echo "OK"; fi
if [ "010" \< "01.0" ]; then echo "Wrong"; else echo "OK"; fi
Run Code Online (Sandbox Code Playgroud)
阅读文档似乎[[ < ]]并且[ \< ]应该工作相同,但他们没有.[[ < ]]当字符串长度不同时,似乎工作错误.我错过了什么吗?
编辑:预期结果为4 x OK.测试:
OK Wrong OK OK)OK Wrong OK OK)OK OK OK OK)这是来自的文档help test:
字符串 1 > 字符串 2
如果 STRING1 按字典顺序排序在 STRING2 之后,则为 True。
以你的第一条if语句为例:
if [[ "010" < "01." ]]; then echo "Wrong"; else echo "OK"; fi
Run Code Online (Sandbox Code Playgroud)
在 Bash 中,字符串"01."按字典顺序排序在字符串之前"010"(您可以在 Microsoft Excel 等其他工具中进行测试),因此比较返回 false。您的所有 4 次比较都是如此。
0请注意,在 的末尾添加附加项"01."不会改变与 的顺序"010",因此您仍然会得到相同的结果。
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |