使用 bash 函數捕獲 stdin/stdout 時將指令傳送到後台

使用 bash 函數捕獲 stdin/stdout 時將指令傳送到後台

livy-server我有一個直接在命令列上啟動的命令:

$cd /git/livy; nohup bin/livy-server > /tmp/livy.log 2>&1 &
[1] 4370
19:11:11/livy $
19:11:12/livy $ll /tmp/livy.log
-rw-r--r--  1 boes  wheel  436 Jan 26 19:11 /tmp/livy.log

但確實如此不是來自一個函數。在我的中~/.profile有一個要啟動的函數livy-server

startlivy() { cd /git/livy; nohup bin/livy-server > /tmp/livy.log 2>&1 & ; }

/Users/boescst/.profile: line 432: syntax error near unexpected token `;'
-bash: /Users/boes/.profile: line 432: `startlivy() { cd /git/livy; nohup bin/livy-server > /tmp/livy.log 2>&1 & ; }'

& 符號是否&需要以某種方式轉義?

順便說一句,雖然這可能不會影響結果 - 我在El Capitan.

答案1

問題是最後的分號需要刪除。

startlivy() { cd /git/livy; 複製程式碼nohup bin/livy-server > /tmp/livy.log 2>&1 & }

答案2

看來該問題僅在嘗試使用單行時才會發生:即以下內容工作:

startlivy() { 
     cd /git/livy
      nohup bin/livy-server > /tmp/livy.log 2>&1 &  
}

注意:如果有人知道如何在一個班輪中處理這個問題,我想知道 - 並將獎勵。

相關內容