加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – “=?”运算符在shell脚本中做了什么?

发布时间:2020-12-15 19:04:00 所属栏目:安全 来源:网络整理
导读:它似乎是一种比较运算符,但是它究竟在做什么呢?以下代码(取自 https://github.com/lvv/git-prompt/blob/master/git-prompt.sh#L154)? if [[ $LC_CTYPE =~ "UTF" $TERM != "linux" ]]; then elipses_marker="…" else elipses_marker="..." fi 我正在尝试让
它似乎是一种比较运算符,但是它究竟在做什么呢?以下代码(取自 https://github.com/lvv/git-prompt/blob/master/git-prompt.sh#L154)?
if [[ $LC_CTYPE =~ "UTF" && $TERM != "linux" ]];  then
            elipses_marker="…"
    else
            elipses_marker="..."
    fi

我正在尝试让git-prompt在MinGW下工作,而MinGW提供的shell似乎不支持这个运算符:

conditional binary operator expected
syntax error near `=~'
`        if [[ $LC_CTYPE =~ "UTF" && $TERM != "linux" ]];  then'

在这个特定的情况下,我可以用elipses_marker =“…”替换整个块(因为我知道我的终端支持unicode),但是这究竟是什么呢?

它是内置[[命令,执行正则表达式匹配]的仅限bash的补充.由于它不必是完整字符串的精确匹配,因此符号被挥动,以指示“不精确”匹配.

在这种情况下,如果$LC_CTYPE包含字符串“UTF”.

更便携版:

if test `echo $LC_CTYPE | grep -c UTF` -ne 0 -a "$TERM" != "linux"
then
  ...
else
  ...
fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读