尽管 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
任何人都可以帮忙吗,我的 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