2011-08-18 73 views
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 

我不明白什麼是錯的。是否有其他方式進行字符串比較?

回答

5

如果你想編寫一個bash腳本,然後不寫POSIX shell腳本:你的家當行更改爲:

#!/bin/bash 

在另一方面,如果你想寫一個可移植的shell腳本,使用case聲明:

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

變化

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

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

+0

雖然這個代碼片斷可以解決的問題,包括如何* *和* *爲什麼這個問題解決了[將真正幫助](// meta.stackexchange.com/的解釋q/114762)來提高你的文章的質量。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 –