2012-09-10 91 views
1

這應該是非常簡單的,但我不確定它在抱怨什麼。將shell腳本從Solaris移植到Linux

type=${1-"-Debug"}; 
version=${2-"-0"}; 
echo "We are going to be building eValuate in build mode: " $type 
if [[ $version = -1 ]] 
    then 
    echo "We are going to be building eValuate with omniORB-4.1.4" 
    else 
    echo "We are going to be building eValuate with omniORB-4.0.4" 
fi 
if [ $PLATFORM = "HPUX" ] 
then 
    if [ $type = -release ] 
    then 
     export MAKEFILE_MAIN=$PWD/common/makefile/makefile.hp 
     export MAKEFILE_DEFS=$PWD/common/makefile/makefile.hp.rls 
     shift 
    else 
     export MAKEFILE_MAIN=$PWD/common/makefile/makefile.hp 
     export MAKEFILE_DEFS=$MAKEFILE_MAIN 
    fi 

    elif [ $PLATFORM = "AIX" ] 
    then 
     mv $PWD/Calculations/CalculationSTD/makefileAIX $PWD/Calculations/CalculationSTD/makefile 
     mv $PWD/Calculations/CalculationSTD/StandardCalculationAIX.cpp  $PWD/Calculations/CalculationSTD/StandardCalculation.cpp 
     rm -r $PWD/Calculations/CalculationSTD/Carleton 
     if [ $type = -release ] 
     then 
     export MAKEFILE_MAIN=$PWD/common/makefile/makefile.aix 
     export MAKEFILE_DEFS=$PWD/common/makefile/makefile.aix.rls 
     shift 
     else 
    export MAKEFILE_MAIN=$PWD/common/makefile/makefile.aix 
    export MAKEFILE_DEFS=$MAKEFILE_MAIN 
     fi 
    fi 

這似乎在Solaris和AIX做工精細,但在Linux上,我得到這個錯誤信息:

: command not found 1: 
    : command not found 2: 
    We are going to be building eValuate in build mode: -release 
    ./setpath.sh1: line 22: syntax error near unexpected token `elif' 
    '/setpath.sh1: line 22: `  elif [ $PLATFORM = "AIX" ] 

爲什麼它不喜歡的elif?或者,它是在抱怨別的嗎?

+0

腳本是否有適當的shebang行?如果沒有,在開始幫助時是否添加'#!/ bin/sh'? (雖然你的語法不適合Bourne shell,但更明確地聲明它是'#!/ bin/bash'腳本的原因。) – tripleee

+0

我從bash,sh,ksh提示符運行腳本,但我仍然得到相同的結果錯誤 – roymustang86

+0

嘗試編寫「elif [$ PLATFORM =」AIX「]」(單個squeare方括號) – dimba

回答

1

得到的答案終於,這是由於一些完全隨機的,是與格式:

我已經在從我的Windows機器傳輸的文件,我想Linux的僅僅是一個婊子,可以不處理它。 Solaris和AIX都很好。

使用此命令。 dos2unix * .sh