shell指令碼編程之迴圈控制結

來源:互聯網
上載者:User

shell指令碼編程之迴圈控制結構

迴圈控制之for迴圈

文法結構1

for Variable in List

do

commands

done

文法結構2

for Variable in List;do

commands

done

這個List可以為列表、變數、命令 等等

for迴圈 事先提供一個元素列表,而後,使用變數去遍曆此元素列表,每訪問一個元素,就執行一次迴圈體,直到元素訪問完畢

1、for迴圈中的List為列表

eg1: 顯示/etc/inittab, /etc/rc.d/rc.sysinit, /etc/fstab三個檔案各有多少行;

#!/bin/bashfor File in /etc/inittab /etc/rc.d/rc.sysinit /etc/fstab;do Row=`wc -l $File | cut -d' ' -f1`echo "$File has: $Row rows"done

運行結果

2、for迴圈中的List為變數

eg2:顯示當前ID大於500的使用者的使用者名稱和id;

 

#!/bin/bashuseradd user1useradd user2useradd user3   #建立幾個使用者便於測試結果Id=`cat /etc/passwd | awk -F: '{print $3}'`for Var in $Id;doif [ $Var -ge 500 ];then  User=`grep "$Var\>" /etc/passwd | cut -d: -f1`  echo "$User uid is $Var"fidone

運行結果

3、for迴圈中的List為命令

eg3:顯示當前shell為bash的使用者的使用者名稱和shell。

顯示結果為 Bash user:root,/bin/bash

分析:先通過以bash結尾的shell來確定使用者,然後把這些使用者一個一個的輸出

 

#!/bin/bashfor Var in `grep "bash\>" /etc/passwd | cut -d: -f7`;doUser=`grep "$Var" /etc/passwd |cut -d: -f1`doneShell=`grep "bash\>" /etc/passwd |cut -d: -f7 |uniq`for name in $User;doecho "Bash user:$name,$Shell"done

運行結果

4、for迴圈中的List為一連串的數字

eg4:分別計算1-100以內偶數(Even number)的和,奇數(Odd number)的和.

分析:當一個數與2取餘用算時,為1則表示該數為奇數,反之為偶數。

 

#!/bin/bashEvenSum=0OddSum=0for I in `seq 1 100`;do  if [ $[$I%2] -eq 1 ]; then    OddSum=$[$OddSum+$I]  else    EvenSum=$[$EvenSum+$I]  fidoneecho "EvenSum: $EvenSum."echo "OddSUm: $OddSum."

運行結果

5、C語言格式的for迴圈

eg5:添加使用者從user520添加到user530,且密碼與使用者名稱一樣。

 

#!/bin/bashfor ((i=520;i<=530;i++));douseradd user$iecho "Add user$i."echo user$i | passwd -stdin user$i &>/dev/nulldone

運行結果:(可以切換一個使用者試試密碼是否和使用者名稱一樣)

其他迴圈的格式如下,所有這些迴圈熟練掌握一種迴圈即可。

while迴圈命令的格式

while test command

do

other command

done

until迴圈的命令格式

until test command

do

other command

done

一個指令碼的面試題 ,各位博友可以把您的答案回複在下面(大家一起交流)

通過傳遞一個參數,來顯示當前系統上所有預設shell為bash的使用者和預設shell為/sbin/nologin的使用者,並統計各類shell下的使用者總數。

運行如 bash eg.sh bash則顯示結果如下

BASH,3users,they are:

root,redhat,gentoo,

運行如 bash eg.sh nologin則顯示結果如下

NOLOGIN, 2users, they are:

bin,ftp,

======博主所學知識來著於恩師馬哥的親授======

馬哥教育“2014夏令營”開始啦!!!馬哥教育是目前性價比最高的Linux培訓,國內好評度排名第一,並被網友稱為Linux界的"黃埔軍校",全部課程採用Centos6.5x86_64講解,經過幾期網路班的總結和錘鍊,逐漸完善的課程體系,學員學習進度監督和優質的考試系統檢驗學員掌握程度,活躍的線上答疑環節,名師陪伴,牛人指點,精彩不容錯過。
詳情猛戳:http://www.magedu.com/
課程內容:http://www.magedu.com/mentuqc
網路班一體化服務:http://mageedu.blog.51cto.com/4265610/1379598

連絡方式:客服QQ 2813150558 客服QQ 1661815153

============================================

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.