while read line無法迴圈read檔案

2021-09-08 18:56:32 字數 807 閱讀 9713

while read line 與for迴圈的區別

例子:要從乙個ip列表中獲取ip、port,然後ssh ip 到目標機器進行特定的command操作

ssh -o stricthostkeychecking=no -p22 ip "ls -la /data/"

ip列表:

115.159.93 1 22

115.159.94.2 22

115.159.94.3 22

115.159.94.4 22

編寫指令碼時使用while read line逐行讀取ip列表,然而出現了這個問題,在while迴圈中只讀取第乙個ip執行了command後就退出了指令碼,而沒有繼續往下迴圈執行

這裡就要解析一下while read line 與for迴圈的區別了

while read line 是一次性將資訊讀入並賦值給line ,而for是每次讀取乙個以空格為分割符的字串。

while中使用重定向機制,ip列表中的所有資訊都被讀入並重定向給了整個while語句中的line變數。所以當我們在while迴圈中再一次呼叫read語句,就會讀取到下一條記錄。

問題就出在這裡,$line中的最後一行已經讀完,無法獲取下一行記錄,從而退出while迴圈。

解決方法:

1、ssh加上-n引數

ssh -n -o stricthostkeychecking=no -p22 ip "ls -la /data/"

2、將ssh的輸入重定向輸入

ssh -o stricthostkeychecking=no -p22 ip "ls -la /data/" < /dev/null

Shell中while read line遇到的坑

今天寫cat檔案,並將結果賦值到陣列中時遇到個坑,while read line之後,我在do done之中進行陣列賦值,最後列印發現陣列為空,錯誤 如下 function testcat 經過查詢,找到以下描述 while read line 是一次性將檔案資訊讀入並賦值給變數line while...

AlibabaProtect無法刪除?無法禁用?

alibabaprotect,與優酷 並強行安裝的軟體 或許阿里系軟體都有 但是卻無法直接結束該程序,c盤下的 program files x86 中的alibabaprotect資料夾也無法直接刪除。1.先通過管理員許可權將c盤下的 program files x86 中的alibabaprote...

wordpress 無法安裝,ftp無法連線問題

第乙個問題 1.你的ftp賬號或者密碼填錯了 2.直接在 根目錄的 wp config.php上填寫 新增 ftp 資訊,防止每次都提示輸入 define ftp host ftp.yoursite.com define ftp user your ftp username define ftp p...