获取shell中case语句的语法错误

获取shell中case语句的语法错误,shell,case,Shell,Case,我对shell是新手,在这段代码得到 bat.sh:第38行:意外标记附近的语法错误newline' 'at.sh:38行: 我想根据用户在命令行中给出的输入运行一些函数,casesatatement必须以esac 大小写的语法是 #!/bin/bash branch=$1 vcva=$2 esx=$3 pxe=$4 setup=$5 #If branch is Vsphere-2015 if [ "$branch" == "vsphere2015"];then ech

我对shell是新手,在这段代码得到

bat.sh:第38行:意外标记附近的语法错误
newline'
'at.sh:38行:


我想根据用户在命令行中给出的输入运行一些函数,
case
satatement必须以
esac

大小写的语法是

#!/bin/bash

branch=$1
vcva=$2
esx=$3
pxe=$4
setup=$5




#If branch is Vsphere-2015

if [ "$branch" == "vsphere2015"];then

      echo " Running Bats for Vsphere-2015 with the following details ."



if [ ! "vcva" ];then

    echo "VCVA Build is $2 "
    echo "ESX Build is $4 "
    echo "pxe info is $5 "


#If all the setups has to be run

setup=$5
case "$setup" in "all")

        echo "runnning all setups on Vsphere-2015."
        vpshere2015_primary
        vpshere2015_M1N1
        vpshere2015_M2N1                               =======> these are methods 
        vpshere2015_legacy
    ;;
所以它应该在这里

case EXPRESSION in CASE1) COMMAND-LIST;; CASE2) COMMAND-LIST;; ... CASEN) COMMAND-LIST;; esac
这里,一旦
$setup
all
匹配,整个命令列表将被删除

此外,不限制您将
所有
放在quote

案例“$setup”(共有)


也可以正常工作

您只需关闭所有if(使用“fi”)和案例陈述(使用“esac”)

我想你也得改变一下

        echo "runnning all setups on Vsphere-2015."
        vpshere2015_primary
        vpshere2015_M1N1
        vpshere2015_M2N1                               =======> these are methods 
        vpshere2015_legacy
    ;;

esac
进入

它将产生如下结果:

if [ ! -z "$vcva" ] ; then

您还需要一个空格才能结束
]
-
[“$branch”==“vsphere2015”]
应该是
[“$branch”==“vsphere2015”]
。原因是:
[
命令要求其最后一个参数必须是
]
,并且参数之间用空格分隔。
if [ ! "vcva" ];then
if [ ! -z "$vcva" ] ; then
#!/bin/bash

branch=$1
vcva=$2
esx=$3
pxe=$4
setup=$5

#If branch is Vsphere-2015
if [ "$branch" == "vsphere2015" ];then
  echo " Running Bats for Vsphere-2015 with the following details ."
  if [ ! -z "$vcva" ];then
    echo "VCVA Build is $2 "
    echo "ESX Build is $4 "
    echo "pxe info is $5 "

    #If all the setups has to be run
    setup=$5
    case "$setup" in 
      "all")    
        echo "runnning all setups on Vsphere-2015."
        vpshere2015_primary
        vpshere2015_M1N1
        vpshere2015_M2N1
        vpshere2015_legacy
      ;;
      *) 
        echo "default action goes here"
      ;;
    esac
  fi # close second if
fi # close first if