看起来这是一种比较运算符,但在例如以下代码中(来自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),但是=~
到底是什么意思?
if echo $LC_TYPE | grep -Fq UTF && test "$TERM" != linux; then
- William Purselltest
和反引号包围第一个“表达式”更直观,使其看起来像一个表达式。(而grep -q在出错时也会为真):-)但我同意。我有一个使用test
的习惯,但我认为它比在管道中使用if:ing
更易读。 - MattBianco[ ]
的Bash扩展,它只存在于[[ ]]
中,而不是Bash对[ ]
的实现。 - Charles Duffy