1 流程控制:
  2        循环语句:
for,
while,
until
  3 
  4        while循环:
  5 
  6            while CONDITION; 
do
  7                循环体
  8             done
  9 
 10             进入条件:当CONDITION为“真”;
 11             退出条件:当CONDITION为“假”;
 12 
 13             while CONDITION; 
do
 14                 循环体
 15                 控制变量的修正表达式
 16             done
 17 
 18             示例:求100以内所有正整数之和;
 19                         #!/bin/bash
 20                         #
 21                         declare -i sum=0
 22                         declare -i i=1
 23 
 24                         while [ 
$i -le 100 ]; 
do
 25                               let sum+=
$i
 26                               let i++
 27                         done
 28 
 29                         echo 
"Sum: $sum."
 30 
 31         练习:分别求100以内所有奇数之和,及所有偶数之和;
 32 
 33         示例:打印九九乘法表;
 34                   #!/bin/bash
 35                   #
 36                   declare -i i=1
 37                   declare -i j=1
 38 
 39                   while [ 
$j -le 9 ]; 
do
 40                        while [ 
$i -le $j ]; 
do
 41                             echo -e -n 
"${i}X${j}=$[$i*$j]\t"
 42                             let i++
 43                        done
 44                        echo
 45                        let i=1
 46                        let j++
 47                   done
 48 
 49         until循环:
 50              until CONDITION; 
do
 51                    循环体
 52                    循环控制变量的修正表达式
 53               done
 54 
 55               进入条件:当CONDITION为“假”时
 56               退出条件:当CONDITION为“真”时
 57 
 58               示例:求100以内正整数之和;
 59               #!/bin/bash
 60               #
 61               declare -i sum=0
 62               declare -i i=1
 63 
 64               until [ 
$i -gt 100 ]; 
do
 65                    let sum+=
$i
 66                    let i++
 67               done
 68 
 69               echo 
"Sum:$sum."
 70         练习1:分别求100以内所有偶数之和,以及所有奇数之和;
 71         练习2:实现九九乘法表;
 72         练习3:分别使用while和until循环实现添加10个用户:user-
user10;
 73 
 74       循环控制:
 75            continue:提前结束本轮循环,而直接进入下一轮;
 76            break [n]:提前结束循环;
 77           
 78            while CONDTION;
do
 79               .......
 80                if CONDITION; then
 81                    break [n]
 82                fi
 83            done
 84 
 85            while CONDTION;
do
 86               .......
 87                if CONDTION2; then
 88                    continue [n]
 89                fi
 90                .......
 91 
 92                示例:求100以内所有偶数之和;
 93                 #!/bin/bash
 94                 #
 95                 declare -i sum=0
 96                 declare -i i=0
 97 
 98                 while [ 
$i -le 100 ]; 
do
 99                      let i++
100                      if [ $[
$i%2] 
-eq 1
 ]; then
101                          echo 
"$i is a odd."
102                          continue
103                      fi
104                      let sum+=
$i
105                 done
106 
107                 echo 
"Sum:$sum."
108 
109           死循环:
110               while true; 
do
111                    循环体
112                    if CONDITION; then
113                       break
114                    fi
115                 done
116 
117                 until false; 
do
118                    循环体
119                    if CONDITION; then
120                       break
121                    fi
122                 done
123 
124             示例;每隔3秒钟查看当前系统是否有名为'gentoo'的用户登录;
125                如果其次查看gentoo登录了,则显示gentoo已经登录;
126                如果未登录,就显示仍然未开始,并显示这是已经是第多少次查看了;
127 
128                 #!/bin/bash
129                 #
130                 username=
$1
131                 declare -i count=0
132 
133                 while true; 
do
134                    if  who | grep 
"^$username" &> /dev/
null; then
135                          echo 
"$username is logged."
136                          break
137                    else
138                        let count++
139                        echo 
"$count $username is not login."
140                    fi
141                    sleep 3
142                 done
143 
144             示例:2
145 
146                 #!/bin/bash
147                 #
148                 declare -i count=0
149                 username=
$1
150 
151                 if [ $
# -lt 1 ]; then
152                     echo 
"At lease one argument."
153                     exit 1
154                 fi
155 
156                 if ! id 
$username &> /dev/
null; then
157                     echo 
"No such user."
158                     exit 2
159                 fi
160 
161                 until who | grep 
"^$username" &> /dev/null; 
do
162                     let count++
163                     echo 
"$count $username is not login."
164                     sleep 3
165                 done
166                 echo 
"$username is logged on."
167 
168 
169         while循环的特殊用法:
170             遍历文件的每一行:
171                 while read VARIABLE; 
do
172                     循环体
173                 done < /PATH/FROM/
SOME_FILE
174 
175             示例:找出UID为偶数的所有用户显示其用户名和ID号;
176             #!/bin/bash
177             #
178             while read line; 
do
179                 userid=$(echo 
$line | cut -d: -
f3)
180                 if [ $[
$userid%2] 
-eq 0
 ]; then
181                   echo 
$line | cut -d: -f1,3
182                 fi
183             done < /etc/
passwd
184 
185 
186         for循环的特殊用法:
187            for((expr1;expr2;expr3)); 
do
188                循环体
189            done
190 
191            expr1:定义控制变量,并初始赋值;
192            expr2:循环控制条件;
193                 进入条件:控制条件为“真”
194                 退出条件:控制条件为“假”
195 
196            expr3:修正控制变量
197 
198             示例:求100以内所有正整数之和;
199 
200       练习1:打印九九乘法表:
201       练习2:传递一个文本文件为参数给脚本,取出此文件的所有的偶数行给予显示,行前要显示行号;
202 
203     函数:
204        function:功能
205           把一段具有独立功能代码封装在一起,并给予命名;后续用到时,可直接通过给定函数名来调用整体代码;
206 
207           函数作用:
208               代码重用:
209               模块化编程:
210 
211         函数的使用方法:
212             先定义:编写函数代码
213             后调用:给出函数名,还可以按需传递参数;
214 
215         定义方法:
216         (1)
function f_name {
217                  函数体
218              }
219          (2
)f_name() {
220                  函数体
221              }
222 
223         调用函数:
224             f_name [argu1,argu2,...]
225 
226         自定义函数状态返回值:
227              return [
#]
228                   0
:成功
229                   1-255
:失败
230                   注意:函数代码执行时,一旦遇到return,函数代码终止运行,函数返回;
231         示例:此前的服务脚本
232 
233         #!/bin/bash
234         #
235         prog=$(basename 
$0)
236         lockfile=
"/var/lock/subsys/$prog"
237         #echo $lockfile
238 
239         if [ $
# -lt 1 ]; then
240            echo 
"Usage: $prog start|stop|restart|status"
241            exit 1
242         fi
243 
244         start() {
245             if [ 
-f $lockfile ]; then
246                 echo 
"$prog is started yes."
247             else
248                touch 
$lockfile && echo 
"Starting $prog ok..." || echo 
"Starting $prog failed.."
249             fi
250         }
251         stop() {
252             if [ 
-f $lockfile ]; then
253                 rm 
-f $lockfile && echo 
"Stop $prog ok..." || echo 
"Stop $prog failed.."
254             else
255                 echo 
"$prog is stopped yet."
256             fi
257         }
258         restart() {
259             if [ 
-f $lockfile ]; then
260                 rm 
-f $lockfile && touch 
$lockfile && echo 
"Restart $prog ok..."
261             else
262                 touch 
$lockfile && echo 
"$prog is stopped, Starting $prog ok..."
263             fi
264         }
265         status() {
266             if [ 
-f $lockfile ]; then
267                 echo 
"Running..."
268             else
269                 echo 
"Stopped..."
270             fi
271         }
272 
273         case 
$1 in
274         start)
275              start
276              ;;
277         stop)
278             stop
279              ;;
280         restart)
281              restart
282              ;;
283         status)
284              status
285              ;;
286 
287         *
)
288             echo 
"Usage: $prog start|stop|restart|status"
289             exit 1
290         esac
291     示例:判断用户ID号的奇偶性
292 
293     #!/bin/bash
294     #
295     evenid() {
296        if [ $
# -lt 1 ]; then
297            return 1
298        fi
299        
300        if ! id 
$1 &> /dev/
null; then
301            return 2
302        fi
303       
304        userid=$(id -u 
$1)
305        if [ $[
$userid%2] 
-eq 0
 ]; then
306           echo 
"$1,Even user ID."
307        else
308           echo 
"$1,Odd user ID."
309        fi
310     }
311 
312     evenid root
313 
314     evenid
315     echo $?
316 
317     evenid rooooooot
318     echo $?
319 
320    模块化编程
321        示例:
322           架设/root/bin/
srv目录有两个文件:
323            (1
)函数文件
324            (2
)脚本文件
325 
326     为脚本使用配置文件
327         一个文件中只定义变量
328         脚本文件source此变量定义的文件
329 
330     变量的作用域:
331          局部变量:
332             local VARIABLE=
value
333 
334          存活时间:
335             函数执行开始,至函数返回结束; 
   
  
View Code
  
  
 
转载于:https://www.cnblogs.com/chaoyazhisi/p/5231338.html
                
        
 
    
 
                    转载请注明原文地址: https://win8.8miu.com/read-1496059.html