我试图编写一个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支持哪种编程构造和流控制?
答案 0 :(得分:2)
据我所知,云控制台(Azure门户上的shell)只是在后台运行容器中的bash实例。换句话说,没有区别。如果我尝试完全按照您上面提供的那样运行脚本,我会得到预期的结果......
~/clouddrive$ bash test.bash -n funky
vn name =
funky
Admin User =
Location =
Resource Group =
Availability Set =
脚本中的行结尾是否有可能不正确?
答案 1 :(得分:2)