每天乙個shell小知識(for)

2021-10-09 17:17:44 字數 865 閱讀 3711

在實際工作環境中,經常會遇到某項任務需要多次執行的情況,而每次執行時僅僅是處理的物件不一樣,其他命令完全相同。如:根據伺服器清單檢查各個主機的存活狀態;根據ip位址黑名單設定拒絕訪問的防火牆策略等。

這樣繁瑣的重複任務時,if語句已經不能滿足需求。則我們需要for迴圈語句。

使用for迴圈時,需要指定乙個變數及可能的取值列表,針對每乙個不同的取值重複執行相同的命令序列,直到變數值用完退出迴圈。在這裡,「取值列表」稱為for語句的執行條件,其中包括多個屬性相同的物件,需要預先指定(如上面提到的ip黑名單)。

for 變數名 in 取值列表

do命令序列

done

for語句的操作物件為使用者指定的變數,並通過in關鍵字為該變數預先設定了乙個取值列表,多個取值之間以空格進行分隔。位於do。。。。。done之間的命令序列稱為「迴圈體」,其中的執行語句需要引用變數以完成相對的任務。

for語句的執行流程:首先將列表中的第乙個取值賦予給變數,並執行do。。。。done迴圈體中的命令序列。然後將列表中的第二個取值賦值給變數,並執行迴圈體中的命令序列。。。。。。依次類推,直到列表中的所有取值用完,然後將跳至done語句,表示迴圈結束。

例:根據姓名列表批量新增使用者:根據員工列表,在linux伺服器中新增相應的使用者賬號。初始密碼為123456.

#vi adduser.sh

#!/bin/bash

ulist=$(cat /root/users.txt)

for uname in $ulist

do useradd $uname

echo "123456" | passwd --stdin $uname &>/dev/null

done

每天乙個shell指令碼(3)

每天乙個shell指令碼 3 題目 請按照這樣的日期格式 x xx xx 每日在 test目錄下生成乙個檔案 判斷目錄是否存在 例如今天生成的檔案為 2018 6 11.log,並且把磁碟的使用情況寫到到這個檔案中 需要知識 日期date函式 獲取 yyyy mm dd 日期格式 date y m ...

每天乙個shell指令碼(4)

習題 將下面這句話中字元數在6以內的單詞列印出來 bash also interprets a number of multi character options 涉及的知識點 迴圈遍歷該字串成每個字元,注 shell中的迴圈的跳出也是用continue和break。shell中的for迴圈規則 1...

每天乙個python小技巧

使用場景 如果需要多次重複的產出檔案,可以通過如下的方式來根據時間戳建立新的資料夾,用來區分儲存檔案。def getcurrenttime dirpath 根據時間戳,建立指定輸出檔案 param dirpath return if os.path.exists dirpath time.strft...