Отправить команду в фоновый режим, одновременно захватывая stdin/stdout с помощью функции bash

Отправить команду в фоновый режим, одновременно захватывая stdin/stdout с помощью функции bash

У меня есть команда для запуска 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 &  
}

Примечание: если кто-то знает, как это сделать одной строкой, я был бы рад узнать — и вознаградил бы.

Связанный контент