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 &  
}

注: これをワンライナーで処理する方法を知っている人がいたら、ぜひ教えてください。また、報酬も与えます。

関連情報