bash中while,until,case,select语句结构
case语句: 在脚本中使用case结构: if的多分支结构和case的选择分支结构的异同: 编写管理用户账户的脚本,第四版,利用case语句+for循环,同时接受创建和删除用户的操作; #!/bin/bash # #helps函数,显示提示信息和帮助信息 helps(){ echo-e"Usage:$(basename$0)options...USERLISTn" echo-e"Options:" echo-e"-a,--add:vAddsomeusersfromUSERLIST." echo-e"-d,--delete:vDeletesomeusersfromUSERLIST." echo-e"-h,--help:vPrinthelpinformationn." echo-e"-v,--verbose:vPrintmoreinformationnaboutmanageusers." echo echo-e"USERLISTFORMAT:" echo-e"USERNAME1,USERNAME2,...,USERNAMEN" } #输入的选项的个数 if[$#-lt1];then helps exit5 fi ADDUSER=0 DELUSER=0 DEBUG=0 #对选项进行筛选执行 forIin$(seq$#);do if[$#-ne0];then case$1in -h|--help) helps exit0 ;; -v|--verbose) DEBUG=1 shift ;; -a|--add) ADDUSERLIST=$2 ADDUSER=1 shift2 ;; -d|--delete) DELUSERLIST=$2 DELUSER=1 shift2 ;; *) helps exit6 ;; esac fi done #执行添加用户的操作 if[$ADDUSER-eq1];then forJin$(echo$ADDUSERLIST|tr',''');do if!id$J&>/dev/null;then useradd$J&>/dev/null echo$J|passwd--stdin$J&>/dev/null [$DEBUG-eq1]&&echo"Createuser$Jsuccessfully." else echo"$Jexistalready." fi done fi #执行删除用户操作 if[$DELUSER-eq1];then forJin$(echo$DELUSERLIST|tr',''');do ifid$J&>/dev/null;then userdel-r$J&>/dev/null [$DEBUG-eq1]&&echo"Deleteuser$Jfinished." else echo"$Jdoesnotexistyet." fi done fi #无论选项位置是先-a或者后-a都会先执行添加用户操作,因为添加用户的操作执行在前边,顺序执行脚本的内容。 while循环结构 写一个脚本,使用while或until循环,计算100以内整数的和; #!/bin/bash # #在$I=100的时候,退出循环,否则判断会进入101 declare-iI=0 until[$I-eq100];do letI++ letSUM+=$I done echo$SUM #!/bin/bash # declare-iI=0 while[$I-lt100];do letI++ letSUM+=$I done echo$SUM 循环控制语句: #!/bin/bash # NUMBER=$[RANDOM%100+1] whiletrue;do read-p"Inputanumber:"INPTNUM if[$INPTNUM-gt$NUMBER];then echo"Toobig" elif[$INPTNUM-lt$NUMBER];then echo"Toosmall" else echo"Yes!youWIN.That's$NUMBER." #在输入数字和随机数字匹配的时候,就退出 break fi done #!/bin/bash # NUMBER=$[RANDOM%100+1] untilfalse;do read-p"Inputanumber:"INPTNUM if[$INPTNUM-gt$NUMBER];then echo"Toobig" elif[$INPTNUM-lt$NUMBER];then echo"Toosmall" else echo"Yes!youWIN.That's$NUMBER." break fi done
select循环结构 #!/bin/bash # #挑选用户名或者quit退出按钮 selectIin$(awk-F:'//bin/bash$/{print$1}'/etc/passwd)quit;do case$Iin quit) exit ;; *) echo"TheUIDof$Iis$(id-u$I)" ;; esac done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |