/ / Como adiciono corretamente um caractere de retorno a este script? - bash, gruntjs, npm, jshint

Como faço para adicionar corretamente um caractere de retorno a esse script? - bash, gruntjs, npm, jshint

Aqui está um script que eu uso para executar o grunhido "globalmente". Ele está em um shell bash e o SO deseja mais contexto, por isso desejo o caractere de retorno para que fique um pouco mais "silencioso" quando corro beast watch.

beast() {
cd ~/root_install/grunt
local a="$1"
if [ $# -eq 0 ]
then
grunt &
fi
if [ $# -eq 1 ]
then
grunt "$a" &
fi
cd ~/root
}

Eu quero um caractere de retorno nesta parte:

  grunt "$a" &

depois de &

Respostas:

0 para resposta № 1

Ao executar o grunhido, você receberá um dos códigos de saída abaixo.

  • 0 - Sem erros!
  • 1 - Erro fatal
  • 2 - Falta erro no arquivo grunt
  • 3 - Erro de tarefa
  • 4 - Erro de processamento do modelo
  • 5 - Erro inválido de regras de preenchimento automático de shell
  • 6 - Aviso

O que você pode fazer é pegá-lo como grunt "$a" &>/dev/null depois escolha o resultado usando $?

Então você pode fazer if [ $? -eq 0 ] como controles no código de retorno.

&>/dev/null Esta é apenas uma abreviação de 2> & 1

Ele redireciona o descritor de arquivo 2 e 1 (STDERR & STDOUT) para / dev / null


0 para resposta № 2

Quando você quiser criar um valor de retorno, atribua o valor de retorno $? para isso:

   grunt "$a" > grunt.log 2>&1
returnvalue=$?

Você pode alterar o arquivo grunt.log para / dev / null. Depois de cd ~/root você pode return ${returnvalue}. Quando você quiser que o grunhido seja executado em segundo plano, você pode alterar a linha para

nohup grunt "$a" > grunt.log 2>&1 &

Isso lhe dará um novo desafio: ao iniciar em segundo plano, o grunhido falha em 2 segundos, e o seu $? returnvalue não notará isso.
Como lidar com isso?
Quando o valor de retorno for 0, aguarde algum tempo (20 segundos?) E verifique o arquivo de log.