尽管 bash 中的语句可执行但仍无法正常工作

If statements in bash not working despite being executable

任何人都可以帮忙吗,我的 Bash 代码中有一个 if 语句,它按原样运行:

if [[  == *.txt ]]; then
  echo "It's a TXT file!!!"
fi

我通过添加 #!/bin/sh 并执行 chmod u+x main.sh, 将 shell 代码设置为可执行,但它仍然打印出错误:

./main.sh: 3: [[: not found

感谢任何帮助!

[[sh 中不存在,您需要在 shebang 行中使用 #!/bin/bash

[[ 是 non-portable bash 主义,你的 shell(如果是 bash)不是 运行,因为 bash,但很可能被调用为 /bin/sh 或者不知何故忘记了 [[ 是什么。

以完全可移植的方式对此进行测试的方法:

case  in
(*.txt) echo "It's a TXT file.";;
(*)     echo "You've got to be kidding me!";;
esac