1

这是我的 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

我不明白出了什么问题。还有其他方法可以进行字符串比较吗?

4

2 回答 2

5

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

#!/bin/bash

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

case "$ENV" in 
  DEV*)
    RUNTIME_CLASSPATH=$(cat ../build/dev.classpath)
    echo "cp: $RUNTIME_CLASSPATH"
    ;;
esac
于 2011-08-18T22:09:25.680 回答
-1

改变

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

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

.

于 2011-08-18T22:06:48.050 回答