2017-09-26 29 views
0

我试图写一个bash脚本,解析传递到脚本参数:Azure的庆典CLI支持,做

while [[ $# -gt 0 ]] 
do 
     case $1 in 
     -n|--name) 
       VMNAME="$2" 
       shift 
       shift 
     ;; 
     -a|--admin-user) 
       ADMINUSERNAME="$2" 
       shift 
       shift 
     ;; 
     -l|--location) 
       LOCATION="$2" 
       shift 
       shift 
     ;; 
     -g|-resource-group) 
       RESOURCEGROUPNAME="$2" 
       shift 
       shift 
     ;; 
     -a|--availability-set) 
       AVAILABILITYSETNAME="$2" 
       shift 
       shift 
     ;; 
     *) # unknown option 
       echo unknwon "$1" 
       shift # past argument 
     ;; 
     esac 
done 

echo "vn name = " 
echo $VMNAME 
echo "Admin User = " $ADMINUSERNAME 
echo "Location = " $LOCATION 
echo "Resource Group = " $RESOURCEGROUPNAME 
echo "Availability Set = " $AVAILABILITYSETNAME 

如果我ssh到我的Linux虚拟机并运行该脚本能正常工作。如果我尝试从我的Azure的CLI执行该脚本,我得到了以下错误:

[email protected]:~/clouddrive$ bash test.bash -n test 
test.bash: line 1: syntax error in conditional expression 
'est.bash: line 1: syntax error near `]] 
'est.bash: line 1: `while [[ $# -gt 0 ]] 

如何在Azure CLI从Linux的bash shell的不同之处的它而言是编程语言的支持? Azure bash CLI支持哪种编程结构和流控制?

回答

1

我测试在我的实验室和重现你的错误:

enter image description here

我们应该改变Windows (CR LF)Unix (LF),然后上传到这个壳。

enter image description here

+0

Newby错误!谢谢! – Jeremy

2

据我所知,云控制台(Azure门户上的shell)只是在后台的容器中运行bash实例。换句话说,没有区别。如果我尝试运行脚本完全按照你在上面提供的,我得到预期的结果...

~/clouddrive$ bash test.bash -n funky 
vn name = 
funky 
Admin User = 
Location = 
Resource Group = 
Availability Set = 

是否有机会行结束符不正确在你的脚本?