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: kleber vianna
Subject: Re: [shell-script] Variável não funciona e não exibe erro.
Date: Tue, 26 Dec 2017 14:16:20 +0000 (UTC)

Alyson,

Caso você ainda não tenha resolvido seu problema gostaria de compartilhar minha resumida experiência de novato no Bash. E desculpe se ela não é pertinente ou se a solução não é adequada. O fato é que funcionou.
Certa tive um problema parecido em que o script funcionava com 2 ou 3 linhas, mas não funcionava completo com várias linhas. O que fiz foi acrescentar linha a linha, uma de cada vez e executar o script a cada inclusão. Obviamente houve um ponto em que peguei o erro. Gastei um tempão e foi uma solução meio tipo "força bruta", mas deu resultado.



De: "Alyson Franklin address@hidden [shell-script]" <address@hidden>
Para: address@hidden
Enviadas: Terça-feira, 14 de Novembro de 2017 17:34
Assunto: Re: [shell-script] Variável não funciona e não exibe erro.

 
Fala Itamar,
eu declarei o bash no script, mas esqueci de informar aqui no email. 

Distro que estou usando:
# lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial
Kernel: 4.4.0-79


Julio, 
também não funcionou do jeito que você mencionou.

bash -xv pra debugar no momento que executei o script com a sua alteração: 

+ eval /etc/init.d/jBoss start
/etc/init.d/jBoss start
++ /etc/init.d/jBoss start
JBOSS_CMD_START = cd /AppServer/jboss/bin; /AppServer/jboss/bin/run.sh -c default -b 0.0.0.0
+ echo 'Abrindo arquivo de log...'
Abrindo arquivo de log...
+ sleep 2
+ less -n /AppServer/jboss/server/default/log/server.log

Já troquei por "service jBoss start" / "systemctl start jBoss.service" ,tanto como função, tanto como variável...
Absolutamente nada funcionou!! 

Será que é um bug do próprio sistema?

Em 14 de novembro de 2017 16:28, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 
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. br> 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/defaul t/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/jBos s 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/jB oss 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/jBos s 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]