zsh 数字条件导致错误模式

问题描述 投票:0回答:3

我有一个缩小的函数来调试,但我看不到问题。这是重现该问题的最少代码:

#!/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

if-statement zsh
3个回答
5
投票

我真的不知道如何或为什么,但正如@justsomebody在评论中指出的那样,这是

[[
$ahead
之间的某种奇怪的空白字符。可能是 vim 或其他东西,如果你知道它可能是什么,很高兴知道。

编辑:我要补充一点,

altgr + space
创造了导致这种情况的角色。


0
投票

我遇到了同样的错误,我将双引号字符串放入 .bashrc 文件中已经双引号的命令中。这是一个多行命令,我一开始没有注意到。

不起作用:

alias my_command="echo "doublequoted string example no no""

作品:

alias my_command='echo "doublequoted string example yes yes"'

0
投票

我也发现了同样的问题。只需使用

[ ]
代替
[[ ]]

© www.soinside.com 2019 - 2024. All rights reserved.