-1
我通過SSH以兩種不同的方式執行函數foo.sh(它執行一些更復雜的事情,如執行多個python進程)。爲什麼輸出的行爲與ssh有所不同?
首先,通過以下方式(交互式shell):
ssh [email protected]
./foo.sh
這樣,我得到的所有輸出foo.sh的(錯誤和stdout)
然後,另一種方式:
ssh [email protected] "./foo.sh"
這樣我就不會從任何子過程中得到任何輸出。這兩種方法有什麼區別?爲什麼stderr/stdout的行爲不同?
爲foo.sh一個例子是
#! /bin/bash
./bar.py
哪裏bar.py是
#! /usr/bin/python3
from sys import stdout, stderr
from time import sleep
while True:
stdout.write("A\n")
stderr.write("B\n")
sleep(0.5)
請提供一些'foo.sh'的最小內容來重現您觀察到的行爲。 – merlin2011
第一種方法是什麼?登錄到遠程服務器後,您是否在交互式shell中運行腳本? – chepner
是的,第一種方法是使用交互式shell – cskama