Shell腳本for循環實現逐行處理文件


主要內容:Shell腳本中的for循環實現逐行處理文件

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

說到通過Shell實現逐行處理文件,學過Shell腳本的人會告訴你使用while循環更適合逐行處理文件;

一般來說,以逐行處理文件為例,確認while循環確認把你for循環更加優秀;

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

想要了解的可以參考:https://www.cnblogs.com/lvclass/p/14420139.html

 

接下講解如何通過for循環實現逐行處理文件【存在兩種情況】:

情況一:處理的文件只有一列數據【數據中間不存在空格、制表符;以創建用戶為例,創建3個用戶,如下腳本可以正常執行】

情況二:處理的文件存在多列數據【以創建用戶同時初始化密碼為例,創建3個用戶】:

以上腳本執行完成之后,你會發現操作系統實際上創建了6個系統用戶並且密碼均為空,這並不滿足需求

原因:for循環默認是按照空格、制表符、換行符來分個處理的。所以第一列用戶名、第二列為密碼,在for循環看來都是用戶名,而密碼為空。

           for循環的解析結果如下:for username in user1 pass1 user2 pass2 user3 pass3,因此會創建6個用戶。

           所以,以上的腳本執行編寫的是有問題的。for實現逐行處理文件需要重新定義字段分割符IFS。

 正確的腳本編寫入下:

通過上面的這個腳本則可以實現創建用戶的同時初始化密碼。

 

總結:for循環默認分隔符為空格、制表符以及換行符,需要逐行處理文件【文件中具備多個列值】時,需要重新定義IFS默認分隔符,此時for循環才能真正的逐行處理文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM