bash双括号问题

我是bash脚本的新手,使用双括号时遇到问题。我似乎无法让它们在Ubuntu Server 11.10中完全正常工作。我下面的脚本在if_test.sh中。

#!/bin/bash

if [[ "14"=="14" ]]; then

echo "FOO"

fi

当我运行此简单的shell脚本时,输出为:if_test.sh:5:[[:找不到

从终端运行bash –version后,似乎正在运行GNU bash 4.2.10。任何帮助将不胜感激。谢谢!

回答:

问题出在脚本调用上。您正在发出:

$ sudo sh if_test.sh

在Ubuntu系统上,/bin/sh

dash,不是bash,并且dash不支持双括号关键字(或者在发布本文时还没有,我还没有仔细检查)。您可以通过显式调用bash来解决您的问题:

$ sudo bash if_test.sh

另外,您可以使脚本可执行,并依靠shebang行:

$ chmod +x if_test.sh

$ sudo ./if_test.sh

另请注意,在双方括号之间使用时,==是模式匹配运算符,而不是等价运算符。如果要测试是否相等,可以使用-eq

if [[ "14" -eq "14" ]]; then 

echo "FOO"

fi

或双括号:

if (( 14 == 14 )); then 

echo "FOO"

fi

以上是 bash双括号问题 的全部内容, 来源链接: utcz.com/qa/399118.html

回到顶部