在 bash 中按字典顺序比较两个包含 '_' 的字符串

2023-12-20

我需要按字典顺序比较 bash 脚本中的字符串。问题是 bash 似乎完全忽略了“_”字符,就好像它们根本不存在一样。在 ascii 代码表中,“_”位于大写字母和小写字母之间,因此我假设 A-Z

1   $ if [[ "ab" < "a_" ]]; then echo 1; fi
2   $ if [[ "ab" < "a_a" ]]; then echo 1; fi
3   $ if [[ "ab" < "a_c" ]]; then echo 1; fi
    1
4   $ if [[ "aZ" < "a_" ]]; then echo 1; fi
    $

命令 #3 也应该为 false,因为 '_' 'Z'。

对我来说唯一合乎逻辑的解释是 Debian bash 中简单地省略了 '_' 字符,因此 "ab" false, "ab" false, "ab" true, "aZ" false 是真正被评估的内容。

Debian bash 中是否有任何方法可以比较这些字符串,按照 ascii 代码的建议对待它们的 '_' 字符?

Thanks


正如评论中指出的那样,[[ < ]]运算符取决于您当前的区域设置。这也记录在bash 的手册 https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs:

当与 [[ 一起使用时,“”运算符使用当前区域设置按字典顺序排序。

您可以使用以下命令检查当前区域设置locale。当您在 Mac OS 和 Debian 上运行此命令时,您应该会得到不同的结果。

您可以使用以下命令覆盖脚本的系统区域设置export LC_ALL=...。按 ascii 代码排序的语言环境是C.

$ export LC_ALL=en_US.UTF-8; [[ ab < a_c ]]; echo $?
0
$ export LC_ALL=C; [[ ab < a_c ]]; echo $?
1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 bash 中按字典顺序比较两个包含 '_' 的字符串 的相关文章

  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 替换多个文件中的多个字符串

    我有一个包含正则表达式列表和替换文字字符串的文件 格式如下 OLD REGEXP 1 NEW STRING 1 OLD REGEXP 2 NEW STRING 2 我想替换所有匹配的字符串OLD REGEXP X with NEW STRI
  • 从 bash 变量中删除空格

    假设一个变量包含空格 换行符和制表符 后跟一些文本 为什么会这样 var var space strip var of everything but whitespace then remove what s left i e the wh
  • 如何wget目录中最新的文件

    我想编写一个 bash 脚本来下载并安装最新的每日构建程序 RStudio 是否有可能使wget仅下载目录中最新的文件http www rstudio org download daily desktop http www rstudio
  • Eclipse 的 Bash 脚本插件? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有正经的bashEclipse 的插件 我唯一的要求是语法突出显示 我用谷歌搜索过 但没有看到任何
  • 使用.sh脚本设置环境变量

    如何编写 sh 脚本以在 Ubuntu 14 上全局设置环境变量 i e bin sh sets this in to master etc environment export DB HOST 123 我知道我可以运行这个脚本 它只会将其
  • 使用awk将列中的值替换为txt文件中的另一个值

    我是 Linux 和 awk 脚本编写的新手 我有 tab delim txt 文件 如下所示 AAA 134 145 Sat 150 167 AAA 156 167 Sat 150 167 AAA 175 187 Sat 150 167
  • 通知管道右侧左侧故障?

    我越来越喜欢在 shell 脚本中的函数之间使用类似于生成器的模式 像这样的事情 parse commands da cmd file process commands 然而 这种模式的基本问题是 如果 parse command 遇到错误
  • 如何转义单引号字符串中的单引号

    比方说 你有一个 Bashalias like alias rxvt urxvt 效果很好 However alias rxvt urxvt fg 111111 bg 111111 不会起作用 也不会 alias rxvt urxvt fg
  • 启动 OSX 时未使用 teamcity 代理运行 bash

    我有一个 shell 脚本startup sh执行以下操作 创建 RAM 磁盘并启动 teamcity 代理 bin bash DISK usr bin hdiutil attach nobrowse nomount ram 1677721
  • 通过 SSH 启动长时间运行的程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个运行 Ubuntu 的虚拟机 并且我可以通过 SSH 很好地连接到该虚拟机 我什至可以使用以下命令通过 SSH 启动我的 pyth
  • 为什么 sed 不将 \t 识别为制表符?

    sed s t 1 filename gt sedTmpFile mv sedTmpFile filename 我期待这个sed脚本插入一个tab在每一行前面 filename然而事实并非如此 由于某种原因 它正在插入一个t反而 Not a
  • 仅当程序成功时如何重定向程序的输出?

    当我的程序之一返回非零退出代码时 我想避免重定向其输出 这可能吗 如果可以 我该怎么做 我失败的尝试 echo foo gt file false cat gt file 这导致file是空的 我想要的行为只是调整file当程序成功时 我还
  • 如何在shell脚本中扩展相对路径

    我正在编写一个脚本来使用 bash 在 linux 2 6 上设置环境变量 因此该脚本包含如下命令 export SRC DIR export LIBPATH SRC DIR lib 问题是 当我尝试 echo LIBPATH 时 它显示
  • 移动除一个文件之外的所有文件

    如何移动除一个文件之外的所有文件 我正在寻找类似的东西 mv Linux Old Tux png Linux New 我将旧的东西移动到新的东西文件夹中 除了Tux png 符号代表否定 有一些工具可以完成这项工作吗 如果您使用 bash
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • awk 在Linux终端中输出类似表格或类似Excel的列?

    我做了一个长管子 最后是 awk print 5 t t 3 t 4 在 Linux 终端中 这些列用选项卡填充 第一列条目具有不同数量的字符 因此第二列结果并不完全垂直 怎样才能让桌子看起来更完美呢 尝试将结果通过管道传输到列 t awk
  • shell脚本响应按键

    我有一个 shell 脚本 本质上是这样的 while true do read r input if input a then echo hello world fi done 这一切都很好 但我刚刚意识到在这种情况下必须按 ENTER
  • bash - 从文本文件中删除多行不同的文本

    我正在处理大量日志文件 并且大多数日志文件都有大量被记录多次的重复字符串 为了使与此类事情没有太多关系的其他人 也为我自己 轻松查看日志 我想制作一个脚本来删除一些可能对其他人造成 误报 的文本行 嘿管理员 我多次出现这些错误 gt 叹息
  • 使用环境变量将参数传递给命令

    我正在尝试编写一个 bash 脚本 该脚本采用环境变量并将其传递给命令 所以如果我有类似的东西 export OUT a arg1 b arg2 0 arg2 1 我想在我的 bash 脚本中执行以下操作

随机推荐

  • Python 中 and 与多个 if 的效率

    在 if 语句中使用 and 与使用多个 if 语句在效率上有区别吗 换句话说 就像 if expr1 expr2 and expr3 expr4 dostuff 从效率的角度来看 则不同 if expr1 expr2 if expr3 e
  • selectOneMenu 的第二项加粗

    我有一个 selectOneMenu 其中包含一个州的所有城市 我已经创建了一个 sql 来将资本放在首位 但我想将其加粗以使其对使用它的人更明显 有没有办法将其加粗或采取其他措施以使第二个选项更加明显
  • 将 FindWindow 与多个根窗口一起使用

    所以我正在构建一个使用 win32 的 SendMessage 作为 IPC 的应用程序 我正在使用 FindWindow 根据 className 和 windowName 获取 hWnd 这一切都进展顺利 直到我想与一个与其他根窗口具有
  • 子域到端口重定向[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 5 天前 我创建了一个 AWS 实例来保存我的 jenkins 和 archiva 服务 我已经有自己的域 并创建了 DNS 子域jenk
  • XML FrameLayout 降低了我的 OpenGL SurfaceView 帧速率 (fps)

    我扩展了 GLSurfaceView 并实现了我自己的 GLSurfaceView Renderer 以创建我的第一个相对简单的 Android 2D OpenGLES 游戏 我一直在活动 onCreate 方法上使用以下代码来测试我的游戏
  • 我应该使用迭代器或描述符来保留边或顶点上的引用吗?

    我目前正在设计一个由 Boost Graph adjacency list 和引用此结构中的边或顶点的几个类组成的应用程序 我的问题是 维护对节点或顶点的引用的推荐方法是什么 我猜想在迭代器的情况下 对象访问速度更快 但迭代器可能会因图结构
  • F#,管道转发第一个参数

    与这个问题非常相似 F 管道第一个参数 https stackoverflow com questions 35716622 f pipe first parameter 我目前正在学习 F 和函数式编程 我想知道是否有一种简单的方法可以通
  • CollapsingToolbarLayout 仅在顶部时展开

    我对 AppBarLayout 和 CollapsingToolbarLayout 有一些问题 这是目前发生的情况 https www youtube com watch v z4yD8rmjSjU https www youtube co
  • 如何使用MySQL列别名进行计算?

    如何使用两个子查询中的列别名 lat 和 lng 来进行下面的距离计算 我基本上想做的是使用经度和纬度值计算两个位置之间的距离 但不知何故 我的别名在查询中无法使用 为什么 SELECT wp posts SELECT wp postmet
  • flutter中自定义路由事务错误

    我试图为屏幕实现自定义动画 但遇到错误 错误是 没有为类型 RouteSettings 定义 getter isInitialRoute 这是我的代码 class MyCustomRoute
  • 遍历层次结构对象c#

    如果我有一个像下面这样的课程 我如何遍历它直到它的属性 SomeObjects count 0 public class SomeObject public String Name get set public List
  • TSLint 摆脱缺失的空白

    我一直试图在互联网上搜索来解决这个问题 但没有成功 也许你可以帮助我 我收到 tslint 缺少空格 警告 内容如下 src app content content controller ts 中的警告 4 13 缺少空格 5 21 缺少空
  • 如何在Android Studio的CMakeLists.txt文件中设置版本脚本文件

    我在Android Studio中有一个ndk项目 我想通过这种方式控制导出的符号 set CMAKE SHARED LINKER FLAGS CMAKE SHARED LINKER FLAGS Wl version script D Pr
  • 使用移动网页检测 Android 应用程序是否已安装在设备上 - PHP 和 JS

    我有这样的要求 Android Pit 应用商店已经实现了类似的要求 我需要使用移动网页 PHP 和 JS 检查设备上是否已安装 Android 应用程序 如果安装则立即启动该应用程序 这些是Android坑使用的中间页面 当应用程序尚未安
  • tf.initialize_all_variables() 和 tf.global_variables_initializer() 之间有什么区别

    在Tensorflow官方网站上 它给出了解释tf initialize all variables and tf global variables initializer 功能如下 tf initialize all variables
  • 如何编写循环来重复代码?

    我是Python的初学者 我想重复这段代码 但我真的不知道如何在没有 goto 的情况下做到这一点 我试图了解循环 但不明白如何应用它们 import requests addr input vendor requests get http
  • 使用注释时如何声明 Spring bean autowire-candidate="false"?

    我在用 ComponentScan and Component定义我的春豆 我想要的是声明其中一个豆子是autowire candidate false 这可以通过 xml 中的此属性来完成 注释中没有等效的吗 我想要这个的原因是因为我有同
  • 服务参考的替代方案

    我正在尝试通过解决一些痛点来协助一个项目团队简化他们的工作 他们代码中的痛点之一是 他们通过服务引用 代理 使用 WCF 服务 即Visua Studio 2008 中的 添加服务引用 这会产生很多问题 包括部署开销 源控制获取更新代理的最
  • 带参数的泛型方法与带通配符的非泛型方法

    根据Java 泛型常见问题解答中的此条目 http www angelikalanger com GenericsFAQ FAQSections ProgrammingIdioms html FAQ302B 在某些情况下 泛型方法没有使用通
  • 在 bash 中按字典顺序比较两个包含 '_' 的字符串

    我需要按字典顺序比较 bash 脚本中的字符串 问题是 bash 似乎完全忽略了 字符 就好像它们根本不存在一样 在 ascii 代码表中 位于大写字母和小写字母之间 因此我假设 A Z 1 if ab lt a then echo 1 f