2017-06-22 62 views
0

我有一個接受命令行參數的第三方軟件。我想在一個文件中輸出輸出。我發現了一些莫名其妙的原因代碼掛起,如果我嘗試:bash:將命令從管道中分離

./run_third_part.py &> log 

,但它的工作原理,如果

./run_third_part.py 

我認爲,管道輸出與讀取命令行參數的過程搞亂,儘管其他想法是受歡迎的。我怎樣才能從管道命令中分離出程序? (我還想着把某種括號。)

+0

這個程序是否從輸入中讀取任何東西? – ArturFH

+0

它確實,但它也可以不輸入 – simona

+0

您說「接受命令行參數」。你在哪裏指定這些?它確實是 –

回答

-1

你可以嘗試創建一個子shell並運行該腳本,

bash$ `./run_third_part.py` &> log 

請注意'不' (單引號)

+1

不。這個答案是錯誤的,並且 - 取決於run_third_part.py的輸出 - 可能是危險的。 – ArturFH

+0

我已經在本地系統中嘗試了一個類似的場景並進行了驗證,得出的結論是,在子shell中運行它並將日誌中的全部內容也可以工作。 請解釋它是如何危險的, – Dipankar

+0

因此,嘗試運行一個命令:'\'echo ls \''。然後做一個當前目錄的備份並用'rm *'替換'ls'。 – ArturFH

0

可能該腳本正在等待交互式提示輸入。最簡單的方法通常是給它一些輸入:

./run_third_part.py < /dev/null &> log