大家好,欢迎来到IT知识分享网。
导航
一、while与read
①、echo li |read x;echo $x ==》空
原因:将li传给x,但x与$x不在同一个shell中
都会输出 li
②、禁止某ip连接
iptables -A INPUT -s $ip -j REJECT
③、专门逐行处理,如找出nologin的系统账户
格式:
while read line;do 操作 done < /etc/passwd
#!/bin/bash while read line;do if [[ $line =~ .*/sbin/nologin$ ]];then echo $line|cut -d: -f1,3 fi done < /etc/passwd
④、稍微详细点的报警
#!/bin/bash WARNING=80 MAIL=@.com df|sed -nr '/\/dev\/sd/s#([^ ]+) .* ([0-9]+)%.*#\1 \2#p'|while read DEVICE USE;do if [ $USE -gt $WARNING ] ;then echo "$DEVICE will be full,use:$USE%" |mail -s "DISK WARNING" $MAIL fi done
二、select循环(菜单)
语法:
select 变量 in 菜单; do 循环命令 done
注:菜单的次序保存在$REPLY中
循环的提示符为PS3(PS2是cat <<EOF的提示符)
#!/bin/bash PS3="请点菜(1-6):" color='echo -e \033[1;32m' color1='echo -e \033[1;35m' end='\033[0m' sum=0 echo -e "\033[1;34m\c" select MENU in 土豆丝 千叶豆腐 大盘鸡 红烧牛肉 拉面 选择完毕;do echo -e "\033[0m" case $REPLY in 1|2) $color这道菜价为:¥10$end let sum+=10 $color1目前总共为:¥$sum$end ;; 3) $color这道菜价为:¥20$end let sum+=20 $color1目前总共为:¥$sum$end ;; 4) $color这道菜价为:¥25$end let sum+=25 $color1目前总共为:¥$sum$end ;; 5|6) $color这道菜价为:¥6$end let sum+=6 $color1目前总共为:¥$sum$end ;; 7) $color1您点的菜总共为¥$sum$end break ;; *) echo -e "\033[36;1m亲,没有这道菜哦,请重新选择吧\033[0m" esac done
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130350.html