You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中[ "abc" < $bar ]命令含义及<运算符作用解析

关于Bash中[ "abc" < $bar ]的解释

首先要明确:你写的这条命令里,<不是字符串比较运算符,而是被Bash解析成了输入重定向,这和你以为的test命令([ ... ])里的比较逻辑完全不同。

原命令的实际行为

Bash会先解析命令里的重定向符号,再执行[ ... ]本身:

  • < $bar会被处理为:尝试把变量$bar对应的文件名作为标准输入,传给后面的[ "abc" ]命令。
  • [ "abc" ]本身只是检查字符串"abc"是否非空——这永远是真(退出码为0),但test命令根本不会读取标准输入,所以这个重定向完全没用。
  • 如果$bar对应的文件不存在,Bash会直接报错,比如bash: xxx: No such file or directory(xxx是$bar的取值)。

正确的字符串小于比较方式

如果你的目的是比较字符串"abc"和$bar的ASCII顺序大小,需要用下面两种正确写法:

  • 用标准[ ... ]时,必须转义<为\<,同时给变量加引号防止分词:
    [ "abc" \< "$bar" ]
    
  • 用Bash扩展的[[ ... ]](更推荐,语法更直观安全),不需要转义<:
    [[ "abc" < "$bar" ]]
    

这两种写法才会真正按ASCII码顺序比较两个字符串:比如当$bar是"abd"时,"abc" < "abd"结果为真;当$bar是"abb"时,结果为假。

内容的提问来源于stack exchange,提问作者Dan Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:45:54