Shell语法—— while 条件语句
发布时间:2020-12-15 23:23:32 所属栏目:安全 来源:网络整理
导读:while 循环语句 while 循环语句语法格式为: while 条件表达式 do 指令done 有关脚本运行的相关用法 命令 说明 sh file.sh 把 file.sh 脚本放到后台运行(后台运行脚本的常用方法) ctl+c 停止执行当前脚本或任务 ctl+z 暂停执行当前脚本或任务 bg 把当前脚
while 循环语句
while 循环语句语法格式为: while < 条件表达式 > do 指令 done 有关脚本运行的相关用法
有关进程管理的 Linux 相关命令
小结 一. while 循环结构及相关语句综合实践
二. shell 脚本中各个语句的使用场景
案例一: #!/bin/bash total=0 RETVAL=0 key=$((RANDOM%100)) echo "Let‘s play the guessing game!" echo "key:$key" panduan(){ read -p "input num: " num expr $num + 1 &>/dev/null RETVAL=$? if [ $RETVAL -ne 0 ];then echo "number number !!!" panduan fi } guess(){ ((total++)) if [ $num -lt $key ];then echo "It is too small" panduan elif [ $num -gt $key ];then echo "It is too big" panduan else echo "Guess right" echo "yi gong cai le $total ci" exit 0 fi } main(){ panduan while true do guess done } main $* 案例二:
#!/bin/bash RETVAL=0 balance=0 menu(){ cat << EOF 1) Recharge 2) Send information 3) Query 4) exit EOF read -p " please enter a number: " num case $num in 1) echo "Welcome to chongzhi !" recharge ;; 2) echo "Welcome Check the balance !" send ;; 3) echo "Welcome to the query interface !" selects ;; 4) echo "Looking forward to your next arrival !" exit ;; *) echo "Tips:{1|2|3|4}" menu esac } recharge(){ read -p "please enter to RMB: " rmb expr $rmb + 1 &>/dev/null RETVAL=$? if [ $RETVAL -ne 0 ];then echo "please input num" recharge fi echo "$rmbs Rechargs success" ((rmbs=$rmb + $balance)) menu } send(){ while true read -p "send several messages: " strips expr $strips + 1 &>/dev/null RETVAL=$? if [ $RETVAL -ne 0 ];then echo "please input num" send fi ((count=$strips * 15)) do if [ $count -gt $rmbs ];then echo "Insufficient amount !!!" read -p "Recharge(y|n|o) ?" or if [ $or = y -o $or = Y ];then recharge elif [ $or = n -o $or = N ];then send else menu fi else read -p "Please input information content: " input echo "sending:$input send success" ((balance=$rmbs - $count)) echo "Balance: $balance" fi ((rmbs=$rmbs - $count)) done } selects(){ echo "Query:$balance" menu } menu $* 案例三: #!/bin/bash . /etc/init.d/functions count=0 url_list=( www.baidu.com blog.51cto.com www.taobao.com www.192.168.80.123.com ) waits(){ echo -n "3s run after" for((i=0;i<3;i++)) do echo -n . sleep 1 done echo } url(){ waits for((i=0; i<`echo ${#url_list[*]}`; i++)) do wget -o /dev/null -T 3 --tries=1 --spider ${url_list[$i]}>/dev/null 2>&1 if [ $? -eq 0 ];then action "${url_list[$i]}" /bin/true else action "${url_list[$i]}" /bin/false fi done ((count++)) } main(){ while true do url echo "------count:$count------" sleep 10 done } main while 循环按行读文件 方法一: cat 文件|while read line do 命令 done 方法二: while read line do 命令 done<文件 案例一: #!/bin/bath while read line do echo $line done</home/shell/fun.sh 案例二: #!/bin/bash count=0 while true do netstat -an|grep EST|awk -F ‘[ :]+‘ ‘{print $6}‘|sort|uniq -c>ip.log exec<ip.log while read line do pv=`echo $line|awk ‘{print $1}‘` ip=`echo $line|awk ‘{print $2}‘` if [ $pv -gt 10 ]&&[ `iptables -nL|grep $ip|wc -l` -eq 0 ];then iptables -t filter -I INPUT -s $ip -j DROP echo "sun success" fi done ((count++)) sleep 10 echo "---$count---" done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |