shell中while只迴圈一次的原因

來源:互聯網
上載者:User

標籤:while

一,事件描述:

1,#!/bin/bash

cat  ../ip.txt | while read LINE

do

echo $LINE

ssh $LINE "ls"

done

結果迴圈一次後退出。原因是while中使用重新導向機制,檔案中的資訊全部讀入並重新導向給了整個while語句,ssh語句正好讀取輸入中的所有東西,導致調用玩ssh語句後,輸入緩衝中已經都被讀完了,當read語句再讀的時候讀不到一紀錄,迴圈退出。

2,#!/bin/bash

cat  ../ip.txt | while read LINE

do

echo ------------$LINE

ls

done

正常迴圈完退出

#!/bin/bash

cat  ../ip.txt | while read LINE

do

echo ------------$LINE

cat

done

只迴圈一次退出,cat會列印出檔案中的其他紀錄

二,解決辦法:

1,用for語句替換

#!/bin/bash

for LINE in `cat ../ip.txt`

do

echo $LINE

ssh $LINE "ls"

done

2,輸入重新導向

#!/bin/bash

cat  ../ip.txt | while read LINE

do

echo $LINE

ssh $LINE "ls" < /dev/null

done

本文出自 “LinuxDream” 部落格,請務必保留此出處http://books.blog.51cto.com/2600359/1554840

shell中while只迴圈一次的原因

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.