(一)while do。。。done和case。。。esac嵌套使用
cpsDeploy_menu(){
echo " --- CPS APP Menu--- "
echo " help app command: getdeploy app_name "
#echo "deploy $size $app_name "
echo " Check app status: status app_name:app_name "
echo " Deploy Command : deploy IP app_name source_path/"
#echo
while true ; do
read -p "App> " appcomm deploylist(两个变量)
case "$appcomm" in
"quit")
break
;;
"getdeploy")
echo " Search $deploylist :"
num=`grep "^$deploylist" cpsapplist.prop | wc -l`
if [ $num > 0 ];then
getdeployapp $deploylist
else
echo " Please sure the app name is correct! "
fi
;;
"deploy")
echo " cps app deployment now...."
echo "deploy directory: $deploylist"
deploywarapp $deploylist
#getdeploylist $deploylist
;;
"status")
getappstatus $deploylist
;;
esac
done
}
注意:
在测试的过程中我发现了一个错误,就是那个if [ $num > 0 ]中不能够用>,正确的用法应该是
if [ $num-gt 0 ]
或者
if [ $num\>0 ]
或者
if [[ $num>0 ]]
(二)while do。。。done和if。。。then。。。fi的嵌套使用
getappInfo(){
app=$1
i=0
sed -n "/^$app=/p" "$sordir"cpsapplist.prop | cut -d= -f2 | while read i
do
if [ ! -z "$i" ]
then
array=( `echo $i`)
size=${#array[*]}
ip=${array[0]}
appid=${array[1]}
appdir=${array[2]}
startcmd=${array[3]}
apptype=${array[4]}
fi
done
}
点评:
首先getappInfo()是自定义的函数
然后用到一个管道命令
再有就是while do。。。done和if。。。then。。。fi的嵌套使用
最后在if。。。then判断语句中又用到了数组
这些都是这个函数的一大亮点~
ps:
break跳出整个循环
continue跳出本次循环,进行下次循环