(一)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跳出本次循环,进行下次循环
本文深入探讨了Shell脚本中的高级循环(如while-do-done)与条件语句(如case-esac)的嵌套使用,通过案例展示了如何实现复杂功能,包括用户交互、命令执行和状态检查。同时,介绍了自定义函数getappInfo的实现,涉及管道命令、数组操作和条件判断,旨在提高脚本的灵活性和效率。
2051

被折叠的 条评论
为什么被折叠?



