如何在Bash中测试字典小于或等于的字典?

tsk*_*zzy 25 bash

在Bash中,有一种简单的方法可以测试一个字符串是否按字典顺序小于或等于另一个字符串?

我知道你可以这样做:

if [[ "a" < "b" ]]
Run Code Online (Sandbox Code Playgroud)

用于测试严格的不平等,或

if [[ 1 -le 1 ]]
Run Code Online (Sandbox Code Playgroud)

对于数字.但-le似乎没有使用字符串,并使用<=给出语法错误.

Gor*_*son 41

只是否定大于测试:

if [[ ! "a" > "b" ]]
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 7

您需要使用||附加条件而不是<=:

[[ "$a" < "$b" || "$a" == "$b" ]] 
Run Code Online (Sandbox Code Playgroud)

  • 不仅仅是整数的'-gt`吗? (8认同)
  • 使用`[!POSIX 中的 "$a" -gt "$b" ]` (2认同)
  • @CiroSantilli乌坎事件2016六四事件法轮功适合我:`test"5"-gt"6"; echo $?` - > 1,和`test"7"-gt"6"; echo $?` - > 0 (2认同)
  • @KajMagnus你用整数测试,而不是任意字符串.`test"abc"-gt"xyz"; echo $?` - >"-bash:test:abc:integer expression expected".此外,字符串比较顺序是不同的:作为整数,"10"大于"9",但作为字符串,它是相反的,因为"1"在词法排序顺序中出现在"9"之前. (2认同)