相同的shell脚本无法在不同的环境

时间:2016-05-18 19:14:44

标签: linux bash shell unix batch-file

我对Unix有基本知识,知道如何运行shell脚本。 进程:我们创建了一个批处理(例如:test.bat),它将通过传递参数来调用shell脚本(shelltest.sh)。

当用户在UI应用程序前面输入命令时,test.bat文件将使用命令行调用(例如:test.bat“-h checkwriter -A 20141203”)

bat文件正在调用sh文件并传递参数,但问题是我在sh文件中有一个函数/方法来验证某些检查,这个检查是在while块内。 这里函数正在调用但退出而没有进入while条件。

相同的shell脚本在测试环境中工作正常但在PROD环境中失败的地方。

test.bat的

sh shelltest.sh

shelltest.sh

 #!/bin/sh
#set -x

PROGRAMNAME=`basename $0` 
echo "Prog name is $PROGRAM"                                             
QUIT=0

Check_test()
{

echo "Check1:$@"
echo "Check2:$#"
echo "Check3:$*"

echo "Param1 : is $1"
echo "Param2 : is $2"
echo "Param3 : is $3"


while [ $# -ne 0 ]
      do
         case `echo $1 | tr "[:lower:]" "[:upper:]"` in

                 -K)          
                     echo "Inside MYVAR before:${1}"
                     shift
                     MYVAR=${1}
                     echo "Inside MYVAR after:${1}"
                     ;;
                  *) 
                     echo "Inside what is"
                     ;;

                    esac

                  if [ $# -ne 0 ]
                  then
                    shift
                  fi
       done     

     if [ "${MYVAR}" == "" ]
       then 
         echo "Failed to enter into while condition "
         QUIT=1;
     fi
}

Check_test $*

为各个环境输出上述代码是

**'---The out put in Testing environment  (-K checkwriter -A 20141203) 
Prog name is shelltest.sh 
Check1 : -K checkwriter -A 20141203 
Check2 : 4 
Check3 : -K checkwriter -A 20141203 
'after entered in while loop 
Inside MYVAR before:-K 
Inside MYVAR after: checkwriter**

**'----The output in PROD environment
Prog name is (no file is coming...it is empty)
Check1 : -K checkwriter -A 20141203
Check2 : 4
Check3 : -K checkwriter -A 20141203
'Not entering into while loop
Failed to enter into while condition** 

上面的shell脚本给出了所期待的内容,但是在PROD环境中它没有进入while循环。还有一个'basename'在生产中也是空的。

请,任何人都可以建议我如何解决这个问题。

注意:我们在Windows机器上运行,但为了支持unix命令,我们安装了一些第三方apis。

0 个答案:

没有答案