[英]Strange behaviour of bash script
我有以下script.sh:
#!/bin/bash
ssh server1 "echo hello from server1"
ssh server2 "echo hello from server2"
以cat ./script.sh | bash
身份執行時cat ./script.sh | bash
cat ./script.sh | bash
我得到
來自server1的問好
當以bash ./script.sh
執行它時
來自server1的問好
來自server2的問好
誰能解釋其中的區別? :)
在第一種情況下,cat的輸出連接到bash和ssh的標准輸入。 ssh從其stdin讀取,因此消耗了cat的其余輸出,盡管在這種情況下,由於遠程命令本身從未讀取stdin,結果被丟棄了。
在第二種情況下,bash的stdin(即ssh)是您的終端,bash單獨打開腳本文件,因此ssh看不到它。
您的第一個示例只是將命令通過管道傳送到bash中,而無需關心是否處理了第一個命令。 (第二個命令被bash吞沒了)
您的第二個示例有效,因為bash只是逐行處理。
//更新:以下內容將在您的第一個示例中起作用:
#!/bin/bash
ssh server1 "echo hello from server1" &
ssh server2 "echo hello from server2" &
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.