簡體   English   中英

bash腳本的奇怪行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM