SHELL腳本之for循環(huán)?

本文主要解答三個問題:

第一問:for循環(huán)大固定語法結構和工作原理是什么?

第二問:如何運用shell腳本中,for循環(huán)命令編寫出一個測試172.25.0.0這個網(wǎng)段的所有IP地址是否能夠通信?

第三問:如何運用shell腳本中,for循環(huán)命令創(chuàng)建好公司100人的系統(tǒng)帳號和密碼?



第一問:


for循環(huán)大固定語法結構和工作原理是什么?

for循環(huán)大語法結構如下:

for ? ?變量名 ? ?in ? ? ? ?值列表

do

命令序列

done

舉個栗子:有一天,你惹你家媳婦生氣了,后果就是寫10萬遍“老婆大人,我錯了”;

天吶!“老婆大人,我錯了”,這句話加標點符號共計800萬字。

腫麼辦?這是要把手寫殘的節(jié)奏。

英雄,莫擔心! for 循環(huán)來拯救你。


for ? ?i ? ?in ? ? seq ?100000

do

echo ? ?老婆大人,我錯了 ? ?>> ? ?/ luo.txt

done


2分鐘,搞定。

因此,我們可以得出一個結論,for循環(huán)的工作原理就是通過指定一個變量,然后再從值列表中循環(huán)賦值,每次賦值后再執(zhí)行同樣大操作。

上述案例中:i ? ?就是變量 ? ? ; ? ?seq ? 100000 ?就是值列表 ? ? ; ? ?

執(zhí)行大命令就是: ?echo 老婆大人,我錯了 >> / luo.txt


第二問:


如何運用for循環(huán)命令編寫出一個測試172.25.0.0這個網(wǎng)段的所有IP地址是否能夠通信?

1.vim ? ?/ ping.sh ?

2.#!/bin/bash

3.x=0

4.y=0

5.for ? i ? in ? seq ?254 ? ? ? ?

6.do????

7.ping ?-c ?3 ?-i ?0.2 ? - W ?1 ? 172.25.0.$i ? ? ? ?&> ? ? ?/dev/null

8.if ? ?[ ? ? $? ?-eq ?0????];then

9.echo ? ?"172.25.0.$i通了" ? ? ? ? ? ?>> ? ?/ok.txt

10.let ? x++

11.else

12.echo ? ?"172.25.0.$i不通" ? ? ? ? ? ?>> ?/no.txt

13.let ?x++

14.fi

15.done

16.echo ? ?"${x}臺通了,${y}臺不通"

譯為:


1.##譯為:運用vim文本編輯器工具創(chuàng)建一個名叫ping.sh的腳本文件;

2.##譯為:shell腳本固定大格式;

3.4.##譯為:為 x 和 y ?這來兩個變量名賦值都為 0 ;

5.##譯為:對于 i 這個變量,從 seq 254 里面取值;

6.##譯為:做以下操作

7.##譯為:用ping命令測試172.25.0.0這個網(wǎng)段254臺機器,每臺機器ping 3次,每次0.2秒,不管成功還是失敗反饋時間為1秒,并把結果丟到文件黑洞里面;

8.##譯為:用 if 判斷是否ping通,如果ping通了就運用echo 輸出172.25.0.$i通了,并把結果追加重定向到ok.txt這個文件里面;

9.##譯為:ping通了,則運用 let 運算工具給變量 x 加上 1 ;

10.##譯為:如果沒ping通了就運用echo 輸出172.25.0.$i不通,并把結果追加到no.txt這個文件里面;

11.##譯為:沒ping通,就運用 let 運算工具給變量 y 加上 1 ;

12.##譯為:結束,完成;

13.##譯為:運用 echo 查看比變量 x 和 y 的值,看下總共有多少臺機器是能夠通信的,有多少臺是不能通信的;


第三問:


如何運用shell腳本中,for循環(huán)命令創(chuàng)建好公司100人的系統(tǒng)帳號和密碼?

公司人員名單表是:haha.txt

vim ? ?/user.sh

#!/bin/bash

for ? i ? in ? `cat ? haha.txt`

do

useradd ? ? $i

echo ? ? ?用戶 $ i 創(chuàng)建成功

echo ? 123456 ? ?| ? ?passwd ? --stdin ? ?$i ? ? ? ? ? ?&> ? ?/dev/null

echo ? ? ?用戶 $ i 密碼設置成功

done


知識拓展:

{1..x} ? ? ? ?????????指的是1...x個數(shù)

例如:mkdir ? ?/luo{1..10} ? 指的是:創(chuàng)建名為luo1—luo10的10個目錄;

? ? ? ? ? ? ?echo ? {1..100} ? ?????指的是:輸出1.2.3.4.5.....100個數(shù);

`seq ? 100...` ? ?指的是輸出1.2.3....100個數(shù);

注意:需要加上` `反撇號;

``反撇號的作用就是提取里面的內容,然后參與前面命令大執(zhí)行;用$()也能達到同樣的效果;

以上......


祝:幸福!
羅貴

2019-03-07于深圳

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • for循環(huán)是編程語言中一種開界的循環(huán)語句,而循環(huán)語句[1] 由循環(huán)體及循環(huán)的終止條件兩部分組成。 for 循環(huán)的...
    guo的學習筆記閱讀 15,087評論 0 3
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,995評論 0 11
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,353評論 0 10
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,503評論 3 53
  • 基礎命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,233評論 0 0

友情鏈接更多精彩內容