获取shell中case语句的语法错误
我对shell是新手,在这段代码得到 bat.sh:第38行:意外标记附近的语法错误获取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
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