Shell指令碼for迴圈實現逐行處理檔案

2022-06-17 10:30:18 字數 1061 閱讀 2742

主要內容:shell指令碼中的for迴圈實現逐行處理檔案

****************************************==

說到通過shell實現逐行處理檔案,學過shell指令碼的人會告訴你使用while迴圈更適合逐行處理檔案;

一般來說,以逐行處理檔案為例,確認while迴圈確認把你for迴圈更加優秀;

但是while迴圈中存在乙個弊端:如果指令碼執行機器到目標機器配置過互信,則while迴圈執行一次就會直接退出,進一步講這種情況不能實現我們的需求。

想要了解的可以參考:

接下講解如何通過for迴圈實現逐行處理檔案【存在兩種情況】:

情況一:處理的檔案只有一列資料【資料中間不存在空格、製表符;以建立使用者為例,建立3個使用者,如下指令碼可以正常執行】

情況二:處理的檔案存在多列資料【以建立使用者同時初始化密碼為例,建立3個使用者】:

以上指令碼執行完成之後,你會發現作業系統實際上建立了6個系統使用者並且密碼均為空,這並不滿足需求。

原因:for迴圈預設是按照空格、製表符、換行符來分個處理的。所以第一列使用者名稱、第二列為密碼,在for迴圈看來都是使用者名稱,而密碼為空。

for迴圈的解析結果如下:for username in user1 pass1 user2 pass2 user3 pass3,因此會建立6個使用者。

所以,以上的指令碼執行編寫的是有問題的。for實現逐行處理檔案需要重新定義字段分割符ifs。

正確的指令碼編寫入下:

通過上面的這個指令碼則可以實現建立使用者的同時初始化密碼。

總結:for迴圈預設分隔符為空格、製表符以及換行符,需要逐行處理檔案【檔案中具備多個列值】時,需要重新定義ifs預設分隔符,此時for迴圈才能真正的逐行處理檔案。

mysql 迴圈 MySQL實現for迴圈逐個遍歷

mysql實現for迴圈逐個遍歷 0 2443 紅薯2019 6 23 21 18 03 sql 結構化查詢語言,包括資料定義語言 ddl 如 create drop alter等 資料操作語言 dml 如 insert update delete之類 資料查詢語言 dql 如 select語句 資...

shell指令碼 for迴圈

迴圈語句 while對於要求控制迴圈次數 操作物件按數字順序編號,按特定條件執行重複操作。重複測試某個條件時,只要條件成立就會反覆執行 無限 除非強制終止,或者exit語句退出指令碼 for迴圈語句 需要指定乙個變數以及可以取值的取值列表,針對每乙個不同的取值執行相同的命令序列,直到變數值用盡,退出...

shell指令碼 迴圈

迴圈有三種for,while,until,前兩種多種語言都有,大同小異,最後那種用的少,咱們就不說了 老規矩,上來先看 塊 root localhost scripts bash ceshi.sh 12 3456 78910 root localhost scripts cat ceshi.sh b...