Bash 为什么If语句仅在独立运行时才会引发[[:not found错误?

Bash 为什么If语句仅在独立运行时才会引发[[:not found错误?,bash,if-statement,Bash,If Statement,我正在使用bash创建脚本。但是在IF语句期间,它会引发以下错误:[[:not found。 我在其他帖子中读到过这个主题,但我的前任似乎写得不好(例如忘记空格或其他)。我的问题有点不同,因为相同的代码如果在其他部分运行不起作用,但如果我完全单独启动它,它会正确工作。 为什么会发生这种情况?我允许使用的变量是整个代码中唯一的变量 echo "Digit how many codon positions do you want to use for your partition. [2-

我正在使用bash创建脚本。但是在IF语句期间,它会引发以下错误:
[[:not found
。 我在其他帖子中读到过这个主题,但我的前任似乎写得不好(例如忘记空格或其他)。我的问题有点不同,因为相同的代码如果在其他部分运行不起作用,但如果我完全单独启动它,它会正确工作。 为什么会发生这种情况?我允许使用的变量是整个代码中唯一的变量

echo "Digit how many codon positions do you want to use for your partition. [2-3]"
read codonpos
echo $codonpos
[[ "$codonpos" = "2" ]] && echo im here
我还尝试:

echo "Digit how many codon positions do you want to use for your partition. [2-3]"
read codonpos
echo $codonpos
if [[ "$codonpos" = "2" ]] 
     then
     echo im here

fi

我重复一遍,如果独立启动,它可以工作,但是如果嵌入到更大的代码中,它就不能工作。

我自己解决了这个错误。问题是由于shebang中存在错误


我写了
#!/bin/sh
而不是
#!/bin/bash

请包括一个,我不能复制这个。如果你能回答的话,这里有几个问题可以帮助我们:(1)你能给我们显示准确的错误行(即屏幕上的整行)(2)你的shebang/(3)是什么你能给我们看一下产生错误的代码行吗,即不是重写(4)或者更可取的是,你能给我们看一个总是失败的最小示例吗?即你的脚本,但删除了所有多余的内容,以及你键入的确切输入。我有几个怀疑:(1)你使用了错误的shebang(2)您在代码中的其他地方有一个heisenbug,一个bug,仅由于输入的特殊性,执行带有bug的codesection会导致错误(3)不太可能的情况是,在
[[
之后有另一个空白字符,而不是干净的空格(长空格、短空格、窄空格……)@Claudio21:很明显,您没有在bash下运行它。您可以通过在脚本中执行
echo$bash\u VERSION
来轻松测试它。如果输出为空,则它不是bash。