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 № 1Ao 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.