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シェルスクリプトを作成しないでください。shebang行を次のように変更します。

#!/bin/bash

一方、ポータブルシェルスクリプトを作成する場合は、次の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 に答える