2012-09-10 90 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