日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell之case和循环语句(case语句的格式与举例)(for循环,while循环until循环语句的详解和continue,break解释, 九九乘法口诀表 ,等腰三角形)

發(fā)布時(shí)間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell之case和循环语句(case语句的格式与举例)(for循环,while循环until循环语句的详解和continue,break解释, 九九乘法口诀表 ,等腰三角形) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • shell編程之case語句與循環(huán)語句(for,while)
  • case多分支語句
      • case語句的實(shí)例
  • 使用for循環(huán)語句
      • for語句實(shí)例
      • 用循環(huán)語句輸出1-10的數(shù)字的五種辦法
      • 計(jì)算偶數(shù)/奇數(shù)的和
  • while循環(huán)語句
      • 使用while批量添加用戶
      • 九九乘法表(2種方法)
      • 三角形(直角,到三角,等腰)
      • 等腰三角形
  • untill循環(huán)語句
      • 案例
    • while死循環(huán)
      • 案例2
      • 案例3
      • 通過變量RANDOM獲得隨機(jī)數(shù)
      • continue和break,exit區(qū)別
      • 給指定用戶發(fā)送消息

shell編程之case語句與循環(huán)語句(for,while)

case多分支語句

格式: case 變量值 in 模式1)命令序列1;; 模式2)命令序列2;;... *) esac

case語句的實(shí)例

100分優(yōu)秀 70 分良好 60 分不及格

[root@localhost ~]# vi pinghost.sh read -p "請輸入(0-100) 成績: " score case $score in8[5-9]|9[0-9]|100)echo "成績優(yōu)秀";;7[0-9]|8[0-4])echo "成績良好";;6[0-9])echo "成績不合格";; *)echo "成績不合格" esac

使用for循環(huán)語句

讀取不同的變量值,用來逐個(gè)執(zhí)行同一組命令

語句結(jié)構(gòu) for 變量名 in 取值列表 do命令序列 done

for語句實(shí)例

批量添加用戶,密碼為123456

[root@localhost opt]# vim name.txt.sh zhangsan lisi wanwu [root@localhost opt]# vim user.sh #!/bin/bash list=$( cat /root/4.txt ) 這里格式$( 要連一起 =$連一起 for add in $listdouseradd $addecho "123123" | passwd --stdin $addecho "創(chuàng)建成功{user} "done

批量刪除用戶

[root@localhost opt]# vim user.sh #!/bin/bash list=$(cat /root/4.txt) for add in $listdouserdel -r $add &>/dev/nulldone

查看主機(jī)狀態(tài)

[root@localhost opt]# vim 1.txt 192.168.100.1 192.168.100.2 192.168.100.3 [root@localhost opt]# vim ping.sh #!/bin/bash name=$(cat /root/1.txt)for ip in $name doping -c 3 -i 0.2 -w 3 $ip > /dev/null if [ $? -eq 0 ];thenecho "${ip} is up"elseecho "${ip} is down" fi done [root@localhost opt]# vim ping.sh Host 192.168.197.1 is up Host 192.168.197.2 is up Host 192.168.197.3 is down -c:發(fā)送三個(gè)包 -i: 發(fā)包間隔0.2秒 -W:等待時(shí)間3秒 $?最后一次執(zhí)行的命令的返回狀態(tài)。如果這個(gè)變量的值為 0,則證明上一條命令正確執(zhí)行;如果這 個(gè)變量的值為非 0 (具體是哪個(gè)數(shù)由命令自己來決定),則證明上一條命令執(zhí)行錯(cuò)誤

查看主機(jī)狀態(tài)第二種方法

[root@localhost opt]# vim ipchk.sh #!/bin/bash for ((i=1;i<=10;i++)) doping -c 3 -i 0.2 -W 3 "192.168.197.$i" &> /dev/nullif [ $? -eq 0 ]thenecho "Host 192.168.197.$i is up"elseecho "Host 192.168.197.$i is down"fi done [root@localhost opt]# ./ipchk.sh Host 192.168.197.1 is up Host 192.168.197.2 is up Host 192.168.197.3 is down Host 192.168.197.4 is down Host 192.168.197.5 is down Host 192.168.197.6 is down Host 192.168.197.7 is down Host 192.168.197.8 is down Host 192.168.197.9 is down Host 192.168.197.10 is down

用循環(huán)語句輸出1-10的數(shù)字的五種辦法

1

[root@192 ~]# vi 6.txt.sh #!/bin/bash for ((i=1;i<=10;i++)) doecho $i done

2

#!/bin/bash i=1 for ((;i<=10;i++)) doecho "$i" done

3

#!/bin/bash i=1 for ((;i<=10;)) doecho "$i"let i++ done

4

#!/bin/bash i=1 for ((;;)) doif [ $i -le 10 ]thenecho "$i"let i++elseexit 0fi done

計(jì)算偶數(shù)/奇數(shù)的和

計(jì)算偶數(shù)的和

[root@192 ~]# vi 6.txt.sh #!/bin/bash sum=0 for((i=0;i<=10;i+=2))dolet sum+=$idoneecho "總和為:$sum"

計(jì)算奇數(shù)的和

[root@192 ~]# vi 6.txt.sh #!/bin/bash sum=0 for((i=1;i<=10;i+=2))dolet sum+=$idoneecho "總和為:$sum"

求偶數(shù)和

[root@192 ~]# vi 6.txt.sh #!/bin/bash sum=0 for((i=0;i<=10;i+=2))doif [ `expr $i % 2` -eq 0 ]thenlet sum+=$ifidoneecho "總和為:$sum"

求奇數(shù)和

[root@192 ~]# vi 6.txt.sh #!/bin/bash sum=0 for((i=1;i<=10;i+=2))doif [ `expr $i % 2` -eq 1 ]thenlet sum+=$ifidoneecho "總和為:$sum"

while循環(huán)語句

語句結(jié)構(gòu) while 條件測試操作 do命令序列 done

使用while循環(huán)語句輸出1-10數(shù)字

[root@192 ~]# vi 6.txt.sh #!/bin/sbin i=1 while [ $i -le 20 ]doecho $ilet i++ done

使用while批量添加用戶

#!/bin/bash i=0 while [ $i -le 19 ] dolet i++useradd stu$iecho "123456" | passwd --stdin stu$i &> /dev/nullecho "stu$i添加成功" done echo "添加完畢"

顯示出1-10不能被3整除的數(shù)

[root@localhost opt]# vim count1.sh #!/bin/bash i=1 while [ $i -le 10 ] doif [ `expr $i % 3` -ne 0 ];thenecho "$i"filet i++ done [root@localhost opt]# sh count1.sh 1 2 4 5 7 8 10

九九乘法表(2種方法)

echo -n 不換行輸出

echo -e 處理特殊字符

\a 發(fā)出警告聲;

\b 刪除前一個(gè)字符; \c 最后不加上換行符號(hào); \f 換行但光標(biāo)仍舊停留在原來的位置; \n 換行且光標(biāo)移至行首; \r 光標(biāo)移至行首,但不換行; \t 插入tab; \v 與\f相同; \ 插入\字符; \nnn 插入nnn(八進(jìn)制)所代表的ASCII字符;

第一種方法

#!/bin/bash for ((k=1;k<=9;k++)) dofor ((i=1;i<=$k;i++))doecho -n ""$k"x"$i"=$(expr $k \* $i) "if [ $i -eq $k ]thenecho -e '\n'fidone done

第二種方法

#!/bin/bashfor ((i=1;i<=9;i++))dofor ((k=1;k<=i;k++))doecho -ne "${i}x${k}=$[$i*$k]\t"doneecho ""done [root@zhang .ssh]# sh zhang5.sh 1x1=1 2x1=2 2x2=4 3x1=3 3x2=6 3x3=9 4x1=4 4x2=8 4x3=12 4x4=16 5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64

三角形(直角,到三角,等腰)

先輸出正三角

#!/bin/bash for ((i=1;i<=5;i++)) dofor ((j=1;j<=i;j++))doecho -n "#"doneecho "" done ~ [root@promote ~]# sh 6.txt.sh # ## ### #### #####

在輸出倒三角

#!/bin/bash for ((i=1;i<=5;i++)) dofor ((k=5;k>=i;k--))doecho -n "#"doneecho "" done ~ [root@promote ~]# sh 6.txt.sh ##### #### ### ## #

等腰三角形

#!/bin/bash for ((i=1;i<=5;i++)) dofor ((k=5;k>=i;k--))doecho -n " "donefor ((j=1;j<=$i*2-1;j++))doecho -n "*"doneecho "" done [root@promote ~]# sh 6.txt.sh************************* echo -n 不換行輸出

untill循環(huán)語句

重復(fù)測試某個(gè)條件,只要條件不成立則反復(fù)執(zhí)行

until 條件測試操作 do命令序列 done

案例

*until小于等于20

#!/bin/bash i=1 while [ $i -le 20 ] doecho $ilet i++ done [root@192 ~]# sh abn.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

while死循環(huán)

#!/bin/bash while true doread -p "輸入yes退出;" keyiif [ $keyi = yes ]thenbreakfi done echo "退出成功" [root@192 ~]# sh b.sh 輸入yes退出;no 輸入yes退出;12 輸入yes退出;yes 退出成功

案例2

創(chuàng)建20個(gè)用戶名為com密碼為123456創(chuàng)建20個(gè)用戶密碼為123456

#!/bin/bash name="com" i=1 while [ $i -le 20 ] douseradd ${name}${i}echo "123456" | passwd --stdin ${name}${i}let i++ done [root@192 ~]# sh 1.sh 更改用戶 com1 的密碼 。 passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。 更改用戶 com2 的密碼 。 passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。 更改用戶 com3 的密碼 。 passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。 更改用戶 com4 的密碼 。 passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。 . . .更改用戶 com20 的密碼 。 passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。 [root@192 ~]# vim 1.sh

案例3

100中沒有3的倍數(shù)

#!/bin/bash i=100 while [ $i -gt 0 ] doif [ `expr $i % 3` -eq 0 ];thenlet i--continueelseecho $ifilet i-- done ~

通過變量RANDOM獲得隨機(jī)數(shù)

石頭剪刀布實(shí)驗(yàn)

[root@localhost opt]# vim four.sh #!/bin/bash #name=four #This is a game!echo "石頭=1、剪刀=2、布=3" read -p "請隨機(jī)輸入1或2或3:" num1 num=$(($RANDOM%3 + 1)) if [ $num1 -ge 1 ] && [ $num1 -le 3 ];thenif [ $num -eq 1 ] && [ $num1 -eq 3 ];thenecho "恭喜哦,你贏了"elif [ $num -eq 1 ] && [ $num1 -eq 2 ];thenecho "你輸了,不要灰心"elif [ $num -eq 2 ] && [ $num1 -eq 1 ];thenecho "恭喜哦,你贏了"elif [ $num -eq 2 ] && [ $num1 -eq 3 ];thenecho "你輸了,不要灰心"elif [ $num -eq 3 ] && [ $num1 -eq 2 ];thenecho "恭喜哦,你贏了"elif [ $num -eq 3 ] && [ $num1 -eq 1 ];thenecho "你輸了,不要灰心"elseecho "平局,再來"fi elseecho "你違規(guī)了" fi [root@localhost opt]# sh four.sh 石頭=1、剪刀=2、布=3 請隨機(jī)輸入1或2或3:2 你輸了,不要灰心 [root@localhost opt]# sh four.sh 石頭=1、剪刀=2、布=3 請隨機(jī)輸入1或2或3:1 恭喜哦,你贏了 [root@localhost opt]# sh four.sh 石頭=1、剪刀=2、布=3 請隨機(jī)輸入1或2或3:3 恭喜哦,你贏了 [root@localhost opt]# sh four.sh 石頭=1、剪刀=2、布=3 請隨機(jī)輸入1或2或3:4 你違規(guī)了

continue和break,exit區(qū)別

在循環(huán)過程中,有時(shí)候需要在未達(dá)到循環(huán)結(jié)束條件時(shí)強(qiáng)制跳出循環(huán),Shell使用兩個(gè)命令來實(shí)現(xiàn)該功能:break和continue。1、break命令允許跳出所有循環(huán)(終止執(zhí)行后面的所有循環(huán))。結(jié)束并退出循環(huán)。2、continue不會(huì)跳出所有循環(huán),僅僅跳出當(dāng)前循環(huán),轉(zhuǎn)而進(jìn)入下一輪循環(huán)。3、exit 退出腳本, 常帶一個(gè)整數(shù)給系統(tǒng),如 exit 0

給指定用戶發(fā)送消息

為指定用戶發(fā)送消息,若用戶不在線(未登錄系統(tǒng)),則每5秒鐘試一次,直到用戶登錄系統(tǒng)后再發(fā)送在線消息,用戶名與消息通過位置參數(shù)傳遞給腳本

給指定用戶發(fā)送在線消息 $# 添加到Shell的參數(shù)個(gè)數(shù) `basename $0`值顯示當(dāng)前腳本或命令的名字 exit 是用來結(jié)束一個(gè)程序的執(zhí)行的,而return只是用來從一個(gè)函數(shù)中返回。exit 1 的時(shí)候,一般是出錯(cuò)定義這個(gè)1,也可以是其他數(shù)字,很多系統(tǒng)程序這個(gè)錯(cuò)誤編號(hào)是有約定的含義的。 但不為0就表示程序運(yùn)行出錯(cuò)。調(diào)用環(huán)境就可以根據(jù)這個(gè)返回值判斷 你這個(gè)程序運(yùn)行是否ok。#!/bin/bash username=$1if [ $# -lt 1 ];thenecho " zhang: `basename $0 ` <username > [ < message > ] " exit 1fi [root@localhost ~]# echo $? 1 [root@localhost ~]# sh 20.sh tanger asdj [root@localhost ~]# echo $? 0 --------------------------------------------------------- 驗(yàn)證是否屬于系統(tǒng)用戶if grep "^$username" /etc/passwd > /dev/null;then :elseecho "not user "exit 2 fi ~ ^脫字符 模式位于文本首行開始 ---------------------------------------------------------測試用戶是否在線,如何不在線,每5s聯(lián)系一次until who | grep "$username" > /dev/num;doecho "user no login " sleep 5done [root@localhost ~]# ./20.sh tange [root@localhost ~]# vim 20.sh [root@localhost ~]# ./20.sh zhang user no login user no login [root@localhost ~]# echo "hollo" | write tangenecho " zhang: `basename $0 ` <username > [ < message > ] " exit 1fi [root@localhost ~]# echo $? 1 [root@localhost ~]# sh 20.sh tanger asdj [root@localhost ~]# echo $? 0 --------------------------------------------------------- 驗(yàn)證是否屬于系統(tǒng)用戶if grep "^$username" /etc/passwd > /dev/null;then :elseecho "not user "exit 2 fi ~ ^脫字符 模式位于文本首行開始 ---------------------------------------------------------測試用戶是否在線,如何不在線,每5s聯(lián)系一次until who | grep "$username" > /dev/num;doecho "user no login " sleep 5done [root@localhost ~]# ./20.sh tange [root@localhost ~]# vim 20.sh [root@localhost ~]# ./20.sh zhang user no login user no login [root@localhost ~]# echo "hollo" | write tange 超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的shell之case和循环语句(case语句的格式与举例)(for循环,while循环until循环语句的详解和continue,break解释, 九九乘法口诀表 ,等腰三角形)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。