它似乎是一种比较运算符,但它究竟做了什么,例如以下代码(取自 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="…"
替换整个 block (因为我知道我的终端支持 unicode),但是这个 =~
到底是什么是吗?
最佳答案
它是对内置 [[
命令的一个仅限 bash 的补充,执行正则表达式匹配。由于它不必与完整字符串完全匹配,因此符号会被波浪形表示“不精确”匹配。
在这种情况下,如果 $LC_CTYPE
CONTAINS 字符串“UTF”。
更便携的版本:
if test `echo $LC_CTYPE | grep -c UTF` -ne 0 -a "$TERM" != "linux"
then
...
else
...
fi
关于bash - "=~"运算符在 shell 脚本中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11206233/