centos - shellscript 循環執行程式碼,但每次執行一次以後就退出了?
过去多啦不再A梦
过去多啦不再A梦 2017-04-25 09:01:06
0
4
905
while read $HOSTNAME
do
    ssh root@$HOSTNAME "poweroff"
done < host.log

host.log 中的內容:
192.168.122.1
192.168.122.2
192.168.122.3

機器配置過ssh互信

執行那個後發現每次只能關掉一台機器腳本就退出了。需要再次執行才能關閉後面的機器,請問是為什麼?謝謝

过去多啦不再A梦
过去多啦不再A梦

全部回覆(4)
淡淡烟草味

在這行寫成這樣試試: ssh root@$HOSTNAME "poweroff"

漂亮男人

或寫 ssh -n 吧。出現這種情況的原因是,ssh 讀取了你餘下的 stdin。

所以我盡量不使用 while + 重定向讀取數據,要讀也用另外的文件描述符來讀。 stdin 很容易被別的指令讀走的。

黄舟

perl -ne 'system q/ssh/, q/root@/.$_,q/poweroff/' host.log #這樣該可以

刘奇

去掉while read $HOSTNAME中的$

while read HOSTNAME
do
ssh root@$HOSTNAME "poweroff"
done

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板