Azure bash CLI支持while和do

时间:2017-09-26 21:47:07

标签: azure azure-cli azure-cli2

我试图编写一个bash脚本来解析传递给脚本的参数:

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

如果我进入Linux vm并运行脚本,这样可以正常工作。如果我尝试从Azure CLI执行脚本,则会出现以下错误:

myaccount@Azure:~/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支持哪种编程构造和流控制?

2 个答案:

答案 0 :(得分:2)

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

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

脚本中的行结尾是否有可能不正确?

答案 1 :(得分:2)

我在实验室测试并重现您的错误:

enter image description here

我们应该将Windows (CR LF)更改为Unix (LF),然后上传到此shell。

enter image description here