Bash没有正确比较字符串

时间:2011-08-18 22:02:05

标签: bash braces

这是我的bash文件

#!/bin/sh
ENV=DEV
echo "env: $ENV"
if [[ "$ENV" == DEV* ]]; then
    RUNTIME_CLASSPATH=$(cat ../build/dev.classpath)
    echo "cp: $RUNTIME_CLASSPATH"
fi
echo "done"

这是终端输出:

~proj/bin$ ./test.sh 
env: DEV
./test.sh: 7: [[: not found
done

我不明白什么是错的。有没有其他方法进行字符串比较?

2 个答案:

答案 0 :(得分:5)

如果要编写bash脚本,请不要编写POSIX shell脚本:将shebang行更改为:

#!/bin/bash

另一方面,如果要编写可移植的shell脚本,请使用case语句:

case "$ENV" in 
  DEV*)
    RUNTIME_CLASSPATH=$(cat ../build/dev.classpath)
    echo "cp: $RUNTIME_CLASSPATH"
    ;;
esac

答案 1 :(得分:-1)

更改

if [[ "$ENV" == DEV* ]]; then

if [ "$ENV" == "DEV" ]; then