我有一个缩小的函数来调试,但我看不到问题。这是重现该问题的最少代码:
#!/bin/zsh
ahead=1
if [[ "$ahead" -ne 0 ]]; then
echo "test"
else
echo "testelse"
fi
我从执行这个脚本中得到:
./test:4: bad pattern :[[ 1
我不明白问题出在哪里。如果我用 tio.run 测试它,它会起作用! 如果我将其复制粘贴到控制台中,它也可以工作。
如果我删除 shebang,我会得到:
./test: line 2: [[ 1: command not found
testelse
我真的不知道如何或为什么,但正如@justsomebody在评论中指出的那样,这是
[[
和$ahead
之间的某种奇怪的空白字符。可能是 vim 或其他东西,如果你知道它可能是什么,很高兴知道。
编辑:我要补充一点,
altgr + space
创造了导致这种情况的角色。
我遇到了同样的错误,我将双引号字符串放入 .bashrc 文件中已经双引号的命令中。这是一个多行命令,我一开始没有注意到。
不起作用:
alias my_command="echo "doublequoted string example no no""
作品:
alias my_command='echo "doublequoted string example yes yes"'
我也发现了同样的问题。只需使用
[ ]
代替 [[ ]]
。