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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell脚本——for循环语句(包含应用案例)

發布時間:2024/3/26 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell脚本——for循环语句(包含应用案例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

for循環語句

  • for循環語法結構
    • 列表循環
    • 不帶列表循環
      • 實例
    • 類C風格的for循環
    • 循環控制語句
  • 應用案例
      • 九九乘法表
      • 直角三角形
      • 等腰三角形
      • 倒等腰三角形
      • 菱形
      • 空心三角形
      • 空心菱形
      • 腳本計算1-100奇數和
      • 判斷所輸整數是否為質數
      • 批量創建用戶
      • 測試網段存活主機

for循環語法結構

列表循環

列表for循環:用于將一組命令執行已知的次數

基本語法結構

#!/bin/bash for i in a b c doecho $i donefor i in {1..10} doecho $i done#!/bin/bash for i in $(seq 10) doecho $i done#!/bin/bash for i in $(seq 1 2 10) # 設置步長 doecho $i done

不帶列表循環

不帶列表的for循環執行時由用戶指定參數和參數的個數

基本語法結構

for idocommand commanddone

實例

#!/bin/bash if [ $# -eq 0 ];thenecho "Usage: $0 加上參數" fi for i doecho $i done[root@maomao 3.27]# bash for.sh 1 2 3 1 2 3#!/bin/bash zhu=(2 4 6 8 10) echo "${zhu[*]}" fun() { local niu=() for i doniu[j++]=$[ $i * 5 ] done echo "${niu[@]}" } result=`fun ${zhu[@]}` echo "新數組的所有值:${result[@]}"

類C風格的for循環

基本語法結構

for(( expr1;expr2;expr3 ))docommandcommanddone for (( i=1;i<=5;i++))doecho $idoneexpr1:定義變量并賦初值 expr2:決定是否進行循環(條件) expr3:決定循環變量如何改變,決定循環什么時候退出

循環控制語句

  • continue:繼續;表示循環體內下面的代碼不執行,重新開始下一次循環
  • break:打斷;馬上停止執行本次循環,執行循環體后面的代碼
  • exit:表示直接跳出程序

應用案例

九九乘法表

#!/bin/bash # 方法一 # by stanZ #!/bin/bash for ((i=1;i<=9;i++)) dofor((n=1;n<=$i;n++))do echo -n "$i*$n=`expr $i \* $n` "doneecho done#!/bin/bash # 方法二 # by stanZ #九九乘法表 for i in `seq 1 9` dofor j in $(seq 1 $i)do echo -n "$i*$j=$[ $i * $j ]" doneecho#let i++ done

直角三角形

#!/bin/bash # by stanZ read -p "請輸入三角形的高:" h for((i=1;i<=$h;i++)) dofor j in `seq $i`do echo -n "*"doneecho done

等腰三角形

#!/bin/bash # by stanZ read -p "請輸入三角形的高:" h for((i=1;i<=$h;i++)) doa=$[ $h - $i ]for j in `seq $a`doecho -n " "doneb=$((2*$i - 1 ))for k in `seq $b`doecho -n "*"doneecho done

倒等腰三角形

#!/bin/bash # by stanZ read -p "請輸入三角形的高:" h for((i=0;i<=$h;i++)) dofor((j=1;j<=$i;j++))do echo -n " "donea=$(( 2*($h-$i) -1 ))for((j=$a;j>=1;j--))do echo -n "*"doneecho done

菱形

#!/bin/bash # by stanZ read -p "請輸入菱形半徑:" h for((i=0;i<=$h;i++)) doa=$[ $h -$i ]for((j=1;j<=$a;j++))doecho -n " "doneb=$((2*$i - 1))for((k=1;k<=$b;k++))do echo -n "*"doneecho donefor((u=1;u<=$h;u++)) dofor((n=1;n<=$u;n++))doecho -n " "donel=$(( 2*($h-$u)-1 ))for((m=1;m<=$l;m++))doecho -n "*"doneecho done

空心三角形

#!/bin/bash # by stanZ read -p "請輸入三角形的高:" h for((i=1;i<=h;i++)) doa=$[ $h - $i ]for((j=1;j<=$a;j++))do echo -n " "doneb=$[ 2*$i -1 ]for((k=1;k<=$b;k++))do if [ $k -eq 1 ];thenecho -n "*"elif [ $i -eq $h ];thenecho -n "*"elif [ $k -eq $((2*$i-1)) ];thenecho -n "*"elseecho -n " "fidoneecho done

空心菱形

#!/bin/bash # by stanZ read -p "請輸入菱形的半徑:" h for((i=1;i<=$h;i++)) doa=$[ $h - $i ]for((j=1;j<=$a;j++))doecho -n " "doneb=$[ 2*$i - 1]for((k=1;k<=$b;k++))doif [ $k -eq 1 -o $k -eq $b ];thenecho -n "*"elseecho -n " "fidoneecho donefor((u=1;u<=$h;u++)) dofor((n=1;n<=$u;n++))doecho -n " "donec=$((2*($h-$u)-1))for((m=1;m<=$c;m++))doif [ $m -eq 1 -o $m -eq $c ];thenecho -n "*"elseecho -n " "fidoneecho done

腳本計算1-100奇數和

#!/bin/bash # 方法1: sum=0 for i in {1..100..2} dosum=$[$i+$sum] done echo "1-100的奇數和為:$sum"# 方法2: #!/bin/bash sum=0 for ((i=1;i<=100;i+=2)) dolet sum=$i+$sum done echo "1-100的奇數和為:$sum"# 方法3: sum=0 for ((i=1;i<=100;i++)) doif [ $[$i%2] -ne 0 ];thenlet sum=$sum+$ifi 或者 test $[$i%2] -ne 0 && let sum=$sum+$idone echo "1-100的奇數和為:$sum"# 方法4: sum=0 for ((i=1;i<=100;i++)) doif [ $[$i%2] -eq 0 ];thencontinueelselet sum=$sum+$ifi done echo "1-100的奇數和為:$sum"#!/bin/bash sum=0 for ((i=1;i<=100;i++)) dotest $[$i%2] -eq 0 && continue || let sum=sum+$i done echo "1-100的奇數和是:$sum"

判斷所輸整數是否為質數

#!/bin/bash #定義變量來保存用戶所輸入數字 read -p "請輸入一個正整數字:" number#先排除用戶輸入的數字1和2 [ $number -eq 1 ] && echo "$number不是質數" && exit [ $number -eq 2 ] && echo "$number是質數" && exit#循環判斷用戶所輸入的數字是否質數for i in `seq 2 $[$number-1]`do[ $[$number%$i] -eq 0 ] && echo "$number不是質數" && exitdone echo "$number是質數"優化思路:沒有必要全部產生2~$[$number-1]序列,只需要產生一半即可。更好解決辦法:類C風格完美避開了生成序列的坑 for (( i=2;i<=$[$number-1];i++)) do[ $[$number%$i] -eq 0 ] && echo "$number不是質數" && exitdone echo "$number是質數"# 方法二 #!/bin/bash read -p "輸入一個數字:" num if [ $num -eq 1 ];thenecho "$num不是質數"exit 1 elif [ $num -eq 2 ];thenecho "$num是質數"exit 2 fifor i in `seq 2 $[$num-1]` doif [ $[$num%$i] -eq 0 ];thenecho "$num不是質數"exit 3elseecho "$num是質數"exit 4fi done

批量創建用戶

#!/bin/bash read -p "請輸入創建用戶的數量:" num read -p "請輸入創建用戶的前綴:" frefix read -p "請輸入創建用戶的密碼:" passwordfor((i=1;i<=$num;i++)) douser=$frefix$iuseradd $userecho "$password" |passwd --stdin $user &>/dev/nullif [ $? -eq 0 ];thenecho "$user is created"fidone

測試網段存活主機

#!/bin/bash # by stanZ #for i in `seq 254` #for i in {1..254} read -p "請輸入想檢測的網段(默認192.168.188.0):" net for((i=1;i<=254;i++)) do{ if [ -z $net ];thenip=192.168.188.$iping -c 3 -W 1 -i 0.2 $ip &>/dev/nullif [ $? -eq 0 ];thenecho "$ip is up." elseecho "$ip is donw."fi elseip=$net.$iping -c 3 -W 1 -i 0.2 $ip &>/dev/nullif [ $? -eq 0 ];thenecho "$ip is up." elseecho "$ip is down."fifi}& # 放入后臺并發執行 done wait echo "all finish.."

總結

以上是生活随笔為你收集整理的shell脚本——for循环语句(包含应用案例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。