我对 bash 脚本非常陌生,在使用双括号时遇到了问题。我似乎无法让它们在 Ubuntu Server 11.10 中工作。我的下面的脚本位于 if_test.sh 中。
#!/bin/bash
if [[ "14"=="14" ]]; then
echo "FOO"
fi
当我运行这个简单的 shell 脚本时,我得到的输出是: if_test.sh: 5: [[: not found
从终端运行 bash --version 后,我似乎正在运行 GNU bash 版本 4.2.10。任何帮助将不胜感激。谢谢!
问题出在你的脚本调用上。您正在发布:
$ sudo sh if_test.sh
在 Ubuntu 系统上,/bin/sh
is dash, not bash https://wiki.ubuntu.com/DashAsBinSh, and dash
不支持双括号关键字(或者在发布本文时不支持,我没有仔细检查)。您可以通过显式调用来解决您的问题bash
反而:
$ sudo bash if_test.sh
或者,您可以使脚本可执行并依赖舍邦线 http://en.wikipedia.org/wiki/Shebang_%28Unix%29:
$ chmod +x if_test.sh
$ sudo ./if_test.sh
另请注意,当在双方括号之间使用时,==
is a 模式匹配运算符 http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching,而不是相等运算符。如果你想测试相等性,你可以使用-eq
:
if [[ "14" -eq "14" ]]; then
echo "FOO"
fi
Or 双括号 http://www.tldp.org/LDP/abs/html/dblparens.html:
if (( 14 == 14 )); then
echo "FOO"
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)