Discussion:
[shell-script] Variável não funciona e não exibe erro.
Alyson Franklin alysonfranklinreal@gmail.com [shell-script]
2017-11-14 14:55:14 UTC
Permalink
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?
Sidney Souza king.sidney@yahoo.com.br [shell-script]
2017-11-14 15:42:06 UTC
Permalink
Veja se isso funciona como você espera.

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

------------------------------------------------------
http://www.politicos.org.br
Post by Alyson Franklin ***@gmail.com [shell-script]
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.
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
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?
Alyson Franklin alysonfranklinreal@gmail.com [shell-script]
2017-11-14 16:05:36 UTC
Permalink
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*
Post by Sidney Souza ***@yahoo.com.br [shell-script]
Veja se isso funciona como você espera.
INICIAJAVA=$(/etc/init.d/jBoss start 2>&1)
------------------------------------------------------
http://www.politicos.org..br <http://www.politicos.org.br>
Post by Alyson Franklin ***@gmail.com [shell-script]
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.
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
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?
Sidney Souza king.sidney@yahoo.com.br [shell-script]
2017-11-14 16:52:32 UTC
Permalink
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
Post by Alyson Franklin ***@gmail.com [shell-script]
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
*No such file or directory*
Post by Sidney Souza ***@yahoo.com.br [shell-script]
Veja se isso funciona como você espera.
INICIAJAVA=$(/etc/init.d/jBoss start 2>&1)
------------------------------------------------------
http://www.politicos.org.br
Post by Alyson Franklin ***@gmail.com [shell-script]
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.
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
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?
Alyson Franklin alysonfranklinreal@gmail.com [shell-script]
2017-11-14 18:02:18 UTC
Permalink
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: #####
#####################

DIRMTG="/AppServer/jboss-4.2.3.GA/server/default/deploy/mtg/"
DIRCALLCENTER="/AppServer/jboss-4.2.3.GA/server/default/deploy/callcenter/"
DIRBKP="/AppServer/jboss-4.2.3.GA/server/default/bkp/"
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
Post by Sidney Souza ***@yahoo.com.br [shell-script]
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
Post by Alyson Franklin ***@gmail.com [shell-script]
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
*No such file or directory*
Post by Sidney Souza ***@yahoo.com.br [shell-script]
Veja se isso funciona como você espera.
INICIAJAVA=$(/etc/init.d/jBoss start 2>&1)
------------------------------------------------------
http://www.politicos.org.br
Post by Alyson Franklin ***@gmail.com [shell-script]
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.
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
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?
itamarnet@yahoo.com.br [shell-script]
2017-11-14 18:17:44 UTC
Permalink
Caro Alyson

Esse script parece o típico usado pelos System V, e pela estrutura parece OK, mas em qual SO vc o está usando?
Muitos Linux, por exemplo Debian e seus variantes, usam o Dash como o shell para inicialização, pois é mais enxuto, e por isso com recursos mais restritos. O Júlio já disse ser um Bash "capado".


Quando vc cria um script a parte, deve estar usando o Bash propriamente, mas nessa estrutura vc pode estar usando o Dash. Não vi nesse script o Shebang no início, então talvez declara-lo explicitamente possa corrigir o problema definindo usar o Bash.


É uma teoria, não sei se vai resolver o problema


[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-11-14 18:28:20 UTC
Permalink
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
<http://www.dicas-l.com.br/programacao-shell-linux>.
Para ir diretamente para o formulário de inscrição, clique aqui
<http://www.dicas-l.com.br/programacao-shell-linux/inscricao.php>.
Aguardamos sua visita.

* Atenção! Últimos treinamentos presenciais do ano! *
Cidade Local Período
Brasilia LinuxSolutions <http://bit.ly/cursoshelljulioneves> 27/11-01/12
São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12
Rio de Janeiro LinuxSolutions <http://bit.ly/cursoshelljulioneves> 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
Post by Alyson Franklin ***@gmail.com [shell-script]
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
$(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: #####
#####################
DIRMTG="/AppServer/jboss-4.2.3.GA/server/default/deploy/mtg/"
DIRCALLCENTER="/AppServer/jboss-4.2.3.GA/server/default/deploy/callcenter/
"
DIRBKP="/AppServer/jboss-4.2.3.GA/server/default/bkp/"
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
Post by Sidney Souza ***@yahoo.com.br [shell-script]
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
Post by Alyson Franklin ***@gmail.com [shell-script]
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
*No such file or directory*
Post by Sidney Souza ***@yahoo.com.br [shell-script]
Veja se isso funciona como você espera.
INICIAJAVA=$(/etc/init.d/jBoss start 2>&1)
------------------------------------------------------
http://www.politicos.org.br
Post by Alyson Franklin ***@gmail.com [shell-script]
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.
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
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?
Alyson Franklin alysonfranklinreal@gmail.com [shell-script]
2017-11-14 19:34:23 UTC
Permalink
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?
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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
cp ${DIR_DEPLOY}$1/wap-pw-*.war "$DIRMTG" && $INICIAJAVA \
&& echo "Abrindo arquivo de log..." ; sleep 2 ; $SERVERLOG
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.
${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
<http://www.dicas-l.com.br/programacao-shell-linux>.
Para ir diretamente para o formulário de inscrição, clique aqui
<http://www.dicas-l.com.br/programacao-shell-linux/inscricao.php>.
Aguardamos sua visita.
* Atenção! Últimos treinamentos presenciais do ano! *
Cidade Local Período
Brasilia LinuxSolutions <http://bit.ly/cursoshelljulioneves> 27/11-01/12
São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12
Rio de Janeiro LinuxSolutions <http://bit.ly/cursoshelljulioneves> 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
Post by Alyson Franklin ***@gmail.com [shell-script]
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
$(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: #####
#####################
DIRMTG="/AppServer/jboss-4.2.3.GA/server/default/deploy/mtg/"
DIRCALLCENTER="/AppServer/jboss-4.2.3.GA/server/default/depl
oy/callcenter/"
DIRBKP="/AppServer/jboss-4.2.3.GA/server/default/bkp/"
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
Post by Sidney Souza ***@yahoo.com.br [shell-script]
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
Post by Alyson Franklin ***@gmail.com [shell-script]
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
*No such file or directory*
Post by Sidney Souza ***@yahoo.com.br [shell-script]
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
Post by Alyson Franklin ***@gmail.com [shell-script]
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.
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
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?
kleber vianna kfvianna@yahoo.com.br [shell-script]
2017-12-26 14:16:20 UTC
Permalink
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 ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com.br>
Para: shell-***@yahoogrupos.com.br
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 LTSRelease:        16.04Codename:       xenialKernel: 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 startJBOSS_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' ***@gmail.com [shell-script] <shell-***@yahoogrupos.com.br> 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íodoBrasilia LinuxSolutions 27/11-01/12São Paulo 4Linux 05-09/12Rio de Janeiro LinuxSolutions 11-15/12
Damos treinamento em sua empresa com certificadoe nota fiscal por um preço, no mínimo, 50% maisbarato que qualquer curso..










Em 14 de novembro de 2017 16:02, Alyson Franklin ***@gmail.com [shell-script] <shell-***@yahoogrupos.com. 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: ##########################
DIRMTG="/AppServer/jboss-4.2.3 .GA/server/default/deploy/mtg/ "DIRCALLCENTER="/AppServer/jbos s-4.2.3.GA/server/default/depl oy/callcenter/"DIRBKP="/AppServer/jboss-4.2.3 .GA/server/default/bkp/"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        #Backupmkdir -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 ; $SERVERLOGfi
Em 14 de novembro de 2017 14:52, Sidney Souza ***@yahoo.com.br [shell-script] <shell-***@yahoogrupos.com. 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 ***@gmail.com [shell-script] <shell-***@yahoogrupos.com. 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 ***@yahoo.com.br [shell-script] <shell-***@yahoogrupos.com. 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 ***@gmail.com [shell-script] <shell-***@yahoogrupos.com. 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? 











#yiv0569479633 #yiv0569479633 -- #yiv0569479633ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv0569479633 #yiv0569479633ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv0569479633 #yiv0569479633ygrp-mkp #yiv0569479633hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv0569479633 #yiv0569479633ygrp-mkp #yiv0569479633ads {margin-bottom:10px;}#yiv0569479633 #yiv0569479633ygrp-mkp .yiv0569479633ad {padding:0 0;}#yiv0569479633 #yiv0569479633ygrp-mkp .yiv0569479633ad p {margin:0;}#yiv0569479633 #yiv0569479633ygrp-mkp .yiv0569479633ad a {color:#0000ff;text-decoration:none;}#yiv0569479633 #yiv0569479633ygrp-sponsor #yiv0569479633ygrp-lc {font-family:Arial;}#yiv0569479633 #yiv0569479633ygrp-sponsor #yiv0569479633ygrp-lc #yiv0569479633hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv0569479633 #yiv0569479633ygrp-sponsor #yiv0569479633ygrp-lc .yiv0569479633ad {margin-bottom:10px;padding:0 0;}#yiv0569479633 #yiv0569479633actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv0569479633 #yiv0569479633activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv0569479633 #yiv0569479633activity span {font-weight:700;}#yiv0569479633 #yiv0569479633activity span:first-child {text-transform:uppercase;}#yiv0569479633 #yiv0569479633activity span a {color:#5085b6;text-decoration:none;}#yiv0569479633 #yiv0569479633activity span span {color:#ff7900;}#yiv0569479633 #yiv0569479633activity span .yiv0569479633underline {text-decoration:underline;}#yiv0569479633 .yiv0569479633attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv0569479633 .yiv0569479633attach div a {text-decoration:none;}#yiv0569479633 .yiv0569479633attach img {border:none;padding-right:5px;}#yiv0569479633 .yiv0569479633attach label {display:block;margin-bottom:5px;}#yiv0569479633 .yiv0569479633attach label a {text-decoration:none;}#yiv0569479633 blockquote {margin:0 0 0 4px;}#yiv0569479633 .yiv0569479633bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv0569479633 .yiv0569479633bold a {text-decoration:none;}#yiv0569479633 dd.yiv0569479633last p a {font-family:Verdana;font-weight:700;}#yiv0569479633 dd.yiv0569479633last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv0569479633 dd.yiv0569479633last p span.yiv0569479633yshortcuts {margin-right:0;}#yiv0569479633 div.yiv0569479633attach-table div div a {text-decoration:none;}#yiv0569479633 div.yiv0569479633attach-table {width:400px;}#yiv0569479633 div.yiv0569479633file-title a, #yiv0569479633 div.yiv0569479633file-title a:active, #yiv0569479633 div.yiv0569479633file-title a:hover, #yiv0569479633 div.yiv0569479633file-title a:visited {text-decoration:none;}#yiv0569479633 div.yiv0569479633photo-title a, #yiv0569479633 div.yiv0569479633photo-title a:active, #yiv0569479633 div.yiv0569479633photo-title a:hover, #yiv0569479633 div.yiv0569479633photo-title a:visited {text-decoration:none;}#yiv0569479633 div#yiv0569479633ygrp-mlmsg #yiv0569479633ygrp-msg p a span.yiv0569479633yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv0569479633 .yiv0569479633green {color:#628c2a;}#yiv0569479633 .yiv0569479633MsoNormal {margin:0 0 0 0;}#yiv0569479633 o {font-size:0;}#yiv0569479633 #yiv0569479633photos div {float:left;width:72px;}#yiv0569479633 #yiv0569479633photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv0569479633 #yiv0569479633photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv0569479633 #yiv0569479633reco-category {font-size:77%;}#yiv0569479633 #yiv0569479633reco-desc {font-size:77%;}#yiv0569479633 .yiv0569479633replbq {margin:4px;}#yiv0569479633 #yiv0569479633ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv0569479633 #yiv0569479633ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv0569479633 #yiv0569479633ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv0569479633 #yiv0569479633ygrp-mlmsg select, #yiv0569479633 input, #yiv0569479633 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv0569479633 #yiv0569479633ygrp-mlmsg pre, #yiv0569479633 code {font:115% monospace;}#yiv0569479633 #yiv0569479633ygrp-mlmsg * {line-height:1.22em;}#yiv0569479633 #yiv0569479633ygrp-mlmsg #yiv0569479633logo {padding-bottom:10px;}#yiv0569479633 #yiv0569479633ygrp-msg p a {font-family:Verdana;}#yiv0569479633 #yiv0569479633ygrp-msg p#yiv0569479633attach-count span {color:#1E66AE;font-weight:700;}#yiv0569479633 #yiv0569479633ygrp-reco #yiv0569479633reco-head {color:#ff7900;font-weight:700;}#yiv0569479633 #yiv0569479633ygrp-reco {margin-bottom:20px;padding:0px;}#yiv0569479633 #yiv0569479633ygrp-sponsor #yiv0569479633ov li a {font-size:130%;text-decoration:none;}#yiv0569479633 #yiv0569479633ygrp-sponsor #yiv0569479633ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv0569479633 #yiv0569479633ygrp-sponsor #yiv0569479633ov ul {margin:0;padding:0 0 0 8px;}#yiv0569479633 #yiv0569479633ygrp-text {font-family:Georgia;}#yiv0569479633 #yiv0569479633ygrp-text p {margin:0 0 1em 0;}#yiv0569479633 #yiv0569479633ygrp-text tt {font-size:120%;}#yiv0569479633 #yiv0569479633ygrp-vital ul li:last-child {border-right:none !important;}#yiv0569479633
Loading...