Envia o comando para o fundo durante a captura de stdin / stdout usando a função bash

1

Eu tenho um comando para iniciar o livy-server que funciona diretamente na linha de comando:

$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

Mas não não de uma função. No meu ~/.profile existe uma função para iniciar o 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 & ; }'

Os & E comercial precisam ser escapados de alguma forma?

BTW, embora isso provavelmente não afete o resultado - estou em El Capitan .

    
por javadba 27.01.2017 / 04:14

2 respostas

1

O problema é o ponto-e-vírgula final que precisa ser removido.

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

    
por 27.01.2017 / 04:44
0

Parece que o problema ocorre apenas quando se tenta usar um one-liner: ou seja, o seguinte faz funcionar:

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

Nota: se alguém souber como lidar com isso em um forro, eu gostaria de saber - e premiará.

    
por 27.01.2017 / 04:25