@while+do。。。done和case。。。esac或者if。。。then。。fi的嵌套使用@

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)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跳出本次循环,进行下次循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值