我对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。