shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Variável não funciona e não exibe erro.


From: Julio C. Neves
Subject: Re: [shell-script] Variável não funciona e não exibe erro.
Date: Tue, 14 Nov 2017 16:28:20 -0200

Fala Alysson,
vc sabe que estamos na reta final de lançamento do curso (as inscrições terminam hoje às 23:59h) e por isso não pude entender timtim por timtim a tua lógica, mas me pareceu que vc queria executar o cmd /etc/init.d/jBoss start na linha:
cp ${DIR_DEPLOY}$1/wap-pw-*.war "$DIRMTG" && $INICIAJAVA \
        && echo "Abrindo arquivo de log..." ; sleep 2 ; $SERVERLOG

Se for isso, vc terá de alterar 2 linhas:

INICIAJAVA="/etc/init.d/jBoss start"

e

cp $DIR_DEPLOY$1/wap-pw-*.war "$DIRMTG" && eval $INICIAJAVA \
        && echo "Abrindo arquivo de log..." ; sleep 2 ; $SERVERLOG

Se entendi errado, desculpe-me.

Vc não perguntou, mas vou responder:

${0##*/} é um uma substituição de parâmetro builtin do Bash e por isso é muito mais rápido que $(basename "$0"). Basta trocar um pelo outro.

Estão abertas as inscrições para o curso Programação Shell Linux.
Para saber sobre o curso, metodologia e valor do investimento clique aqui.
Para ir diretamente para o formulário de inscrição, clique aqui.
Aguardamos sua visita.

* Atenção! Últimos treinamentos presenciais do ano! *
Cidade Local Período
Brasilia LinuxSolutions 27/11-01/12
São Paulo 4Linux 05-09/12
Rio de Janeiro LinuxSolutions 11-15/12

Damos treinamento em sua empresa com certificado
e nota fiscal por um preço, no mínimo, 50% mais
barato que qualquer curso.








Em 14 de novembro de 2017 16:02, Alyson Franklin address@hidden [shell-script] <address@hidden> escreveu:
 

Descarto a possibilidade de ser permissão, pois sou root. E como disse no email anterior, se eu crio essa variavel direto no terminal ou se eu coloco ela num script teste.sh contendo apenas a variavel, ela funciona normalmente. 

MENSAGEM_USO="
Uso: $(basename "$0") [-h | -V]

        -h, --help      Mostra esta tela de ajuda e sai
        -V, --version      Mostra a versão do programa e sai

Exemplos:
        $(basename "$0") -h
        $(basename "$0") ED-1xx

"

# Tratamento das opções da linha de comando

case "$1" in
-h | --help)
        echo "$MENSAGEM_USO"
        exit 0

;;

-V | --version)
# Extrai a versão diretamente do cabeçalho do programa        
        grep '^# Versão' "$0" | tail -1 | tr -d "#"
        exit 0

;;

esac

# Na mensagem de ajuda, o [-h] entre colchetes indica que este parâmetro
# é opcional, ou seja, você pode usá-lo, mas não é obrigatório.

#####################
#### Variáveis: #####
#####################

DIR_DEPLOY="/home/mnt/deploy/"
SERVERLOG="less -n /AppServer/jboss/server/default/log/server.log"
INICIAJAVA=$(/etc/init.d/jBoss start 2>&1)

#############################
#                           #
#        FUNÇÕES:           #
#                           #
#############################

IniciaJava () {
/etc/init.d/jBoss start
}

MataJava () {
ps aux | grep java | grep -v grep| awk '{print $2}' | xargs kill -9
}

# Verifica se passou o nome do jira como argumento
if [[ $# = 0 ]]; then
        echo -e "\033[43;1mInforme o nome do JIRA como argumento.\033[m"
        echo -e "\033[46;1mEx..: $(basename "$0") CALL-1xxx\033[m"
        exit 0

elif [ ! -d ${DIR_DEPLOY}$1 ]; then
        echo -e "\033[41;1mO diretório $1 não existe! Favor verificar manualmente.\033[m"
        exit 1

elif [ ! -f ${DIR_DEPLOY}$1/wap-pw-*.war ]; then
        echo "Diretório vazio. Favor comunicar ao solicitante que ele não subiu o(s) artefato(s)."
        exit 1

# Se o arquivo existir, passa pro próximo passo...
elif [ -f ${DIRMTG}wap-pw-*.war ]; then
        #Backup
mkdir -p ${DIRBKP}$1 && mv --backup ${DIRMTG}wap-pw-*.war ${DIRBKP}$1
        echo -e "\033[44;1mBackup realizado!\033[m" && sleep 2 ; MataJava

        cp ${DIR_DEPLOY}$1/wap-pw-*.war "$DIRMTG" && $INICIAJAVA \
        && echo "Abrindo arquivo de log..." ; sleep 2 ; $SERVERLOG
fi

Em 14 de novembro de 2017 14:52, Sidney Souza address@hidden [shell-script] <address@hidden.br> escreveu:
 

Acho que é melhor você colocar o conteúdo do script aqui para que possamos entender melhor sua dificuldade e tentar ajudar, mas adianto que o seu problema pode ser permissão porque para iniciar processo é necessário o usuário root.

------------------------------------------------------
http://www.politicos.org.br

2017-11-14 14:05 GMT-02:00 Alyson Franklin address@hidden [shell-script] <address@hidden.br>:
 

Fala Sidney,
não funciona! 

Coloquei a variável como "INICIAJAVA=$(/etc/init.d/jBoss start 2>&1)"
e chamei ela com $INICIAJAVA E "$INICIAJAVA" PROTEGIDA COM ASPAS. MESMO ASSIM SEM SUCESSO.
JBOSS_CMD_START: command not found

Quando chamo a variável protegendo com "aspas",dá erro de arquivo ou diretório não encontrado.

JBOSS_CMD_START = cd /AppServer/jboss/bin; /AppServer/jboss/bin/run.sh -c default -b 0.0.0.0: No such file or directory


Em 14 de novembro de 2017 13:42, Sidney Souza address@hidden [shell-script] <address@hidden.br> escreveu:
 

Veja se isso funciona como você espera.

INICIAJAVA=$(/etc/init.d/jBoss start 2>&1)

------------------------------------------------------
http://www.politicos.org.br

2017-11-14 12:55 GMT-02:00 Alyson Franklin address@hidden [shell-script] <address@hidden.br>:
 

Boa tarde, meus amigos! 
Estou com um probleminha diferente. 

Criei um script para realizar deploy de uma aplicação e, uma das variáveis que tem no script é: INICIAJAVA=$(/etc/init.d/jBoss start). O problema é que dentro do script essa variável simplesmente não funciona e nem sequer exibe erro. 

Eu já coloquei a variável de várias formas. Algumas tentativas:
INICIAJAVA="/etc/init.d/jBoss start"
INICIAJAVA=`/etc/init.d/jBoss start`
INICIAJAVA=$(/etc/init..d/jBoss start)

Indo mais fundo, resolvi tirar a variável e criar uma função, e pra minha surpresa também não tive sucesso e mais uma vez nenhum erro foi exibido. 

Eu já debuguei o script, verifiquei se tinha erro de sintaxe, porém não encontrei nada.

Depois de tudo isso, resolvi jogar essa variável dentro de um script teste.sh. Esse script contém apenas duas linhas, que são:
INICIAJAVA=$(/etc/init.d/jBoss start)
$INICIAJAVA

Dentro desse candango funcionou normalmente, mas dentro do script original que tem um pouco mais de 100 linhas, ela não funciona e nem exibe erro. 

Alguém já teve esse problema? 







reply via email to

[Prev in Thread] Current Thread [Next in Thread]