循環執行
循環執行 定義:將某段代碼有次數或無次數循環執行多次。 構成要素:退出條件和進入條件 循環的三種語句:for、while、until
for循環:
格式 for 變量 in 列表;do 循環執行語句 done 執行機制: 依次將列表中的元素賦值給“變量名” ; 每次賦值后即執行一次循環體; 直到列表中的元素耗盡,循環結束 列表生成方式: 1、直接給出生成列表 2、{1..10} 注意:{1..$變量名}是錯誤的寫法 `seq start step end` start:起始值 (可以寫可不寫) step:步長(可以寫可不寫) end:終止值,可以 $變量名 3、返回列表的命令 $(common) 例如:`ls /var/*` 4、使用 glob, 如: *. sh 5、變量引用; $@, $* for循環類似c++用法 for ((控制變量初始化;條件判斷表達式;控制變量的修正表達式)) do 循環體 done
for循環練習題
1、判斷/var/目錄下所有文件的類型 2、 添加10個用戶 user1 - user10,密碼同用戶名 3、 /etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件;分別讀取每個文件,以K開頭的文件輸出為文件加stop ,以S開頭的文件輸出為文件名加start; “ K34filename stop” “S66filename start” 4、寫一個腳本,提示輸入正整數n的值,計算1+2+3+…n的總和 5、 打印九九乘法表
答案一 [root@centos7 bin]# cat varfor.sh #!/bin/bash for fname in `ls -d /var/*` 注意:ls -d /var/*列出的是文件的絕對路徑,如果用ls /var/列出的為相對路徑,需要到/var/目錄下才能判斷 do if [ -h $fname ];then echo "file $fname is symbolic link" elif [ -d $fname ];then echo "file $fname is dirctor" elif [ -f $fname ];then echo "file $fname is commom file" elif [ -b $fname ];then echo "file $fname is a block device " else [ -c $fname ] echo "file $fname is a character file" fi done [root@centos7 bin]# 答案:2 [root@centos7 bin]# cat useraddfor.sh #!/bin/bash for username in user{1..10};do if id -u $username >/dev/null 2>&1;then echo "user exit" else useradd $username echo "useradd success" echo "$username:$username" |chpasswd fi done [root@centos7 bin]# 答案:3 [root@centos7 bin]# cat rc3d.sh #!/bin/bash for fname in $(ls /etc/rc.d/rc3.d);do if [[ "$fname" =~ ^[kK].* ]];then echo "$fname stop" elif [[ "$fname" =~ ^[sS].* ]];then echo "$fname start" fi done [root@centos7 bin]# 答案四: [root@centos7 bin]# cat readnsum.sh #!/bin/bash #name:wangnannan read -p "please input a inter:" int if let $int+0 ;then for i in `seq 1 $int`;do let sum+=$i done else echo "you input is not a integer" exit 22 fi echo "from 1 to $int sum is :$sum" [root@centos7 bin]# 答案5 [root@centos7 until]# cat chengfabiaofor2.sh #!/bin/bash #name:wangnannan for ((i=1;i<=9;i++));do for((j=1;j<=i;j++));do echo -ne "\033[41;41;41;41;32;4m$j*$i=$[j*i]\033[m \t" done echo done [root@centos7 until]# [root@centos7 bin]# cat chengfabiao.sh #!/bin/bash for i in {1..9};do for j in `seq 1 $i `;do echo -e "$j*$i=$[ $i*$j ] \c " done echo -e "\n" done [root@centos7 bin]#
while循環
循環格式 while 條件;do 循環語句 done 循環機制: 循環控制條件;進入循環之前,先做一次判斷;每一次循環之后會再次做判斷;條件為“true”,則執行一次循環;直到條件測試狀態為“ false”終止循環 因此: CONDTION一般應該有循環控制變量;而此變量的值會在循環體不斷地被修正 循環要素: 進入循環:條件為真 退出循環:條件為假 while循環特殊格式 while read line;do 循環體 done < /path/somefile 循環機制:依次讀取somefile文件中的每一行,將值賦給line 變量
until循環
until CONDITION; do
循環體
? done
? 進入條件: CONDITION 為false
? 退出條件: CONDITION 為true
循環控制語句:
continue:退出當次循環 break:退出整個循環
創建無線循環
while true ;do
循環語句
done
until false ;do
循環語句
done
原創文章,作者:wangnannan,如若轉載,請注明出處:http://www.www58058.com/37456