Problemas com IF e ELIF [RESOLVIDO]

1. Problemas com IF e ELIF [RESOLVIDO]

yasmine malafaia de miranda
yasminemm

(usa Ubuntu)

Enviado em 23/04/2017 - 20:30h

Pessoal, alguém poderia me ajudar pq ele cai direto no primeiro IF mesmo que eu diga que o processo é TESTE00FI?

echo "PROCESSO:"
read id_processo

if [ ${id_processo:11:2}="WI" ]; then
echo "FOLDER_TAM:"
read folder
echo ""
echo "STAGE"
read stage
echo ""
echo "TABELA ADABAS"
read table
echo ""
echo "FN:"
read fn
echo "Unix: WI"
echo -e "nohup execods ODS1S000019CE \&\n"
echo -e "nohup execods $id_processo \&\n"
echo -e "nohup execods ODS1S000020CE"
echo ""
echo "TB_PROCESSO:"
echo "INSERT INTO TB_PROCESSO VALUES( '$id_processo', '$id_processo','Carga da stage $stage',NULL,11,${id_processo:7:4}, NULL,'$folder','1S', SYSDATE, 'S');"
echo ""
echo "CT_OPCOES_PWX:"
while ((${#fn}<4));do
fn=$(sed 's/^/0/' <<< "$fn")
done
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'DF','SAC_DF0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'GO','SAC_GO0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'MS','SAC_MS0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'MT','SAC_MT0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'AC','SAC_AC0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'RO','SAC_RO0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'SC','SAC_SC0122F$fn','PWX_NRDB_R2_SUL',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'RS','SAC_RS0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'CR','SAC_CR0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'PR','SAC_PR0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'CO','SAC_CO0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'FR','SAC_FR0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'BR','SAC_BR0122F$fn','PWX_NRDB_R2_SUL',SYSDATE,SYSDATE,'$table');"
echo ""

elif [ ${id_processo:11:2}="FI" ]; then
echo "Unix: WI"
echo ""
echo -e "nohup execods ODS1S000019CE \&\n"
echo -e "nohup execods $id_processo \&\n"
echo -e "nohup execods ODS1S000020CE"

fi



  


2. Re: Problemas com IF e ELIF

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 24/04/2017 - 13:05h

Oi, tudo bem?

Tente deixar um espaço nos dois lados do sinal de igual.


#mude isso

if [ ${id_processo:11:2}="WI" ];

#para

if [ ${id_processo:11:2} = "WI" ];

#faca no elif também


E depois da linha do read, faça um echo ${id_processo:11:2} , esse corte retorna o que você precisa?


Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


3. Re: Problemas com IF e ELIF [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/04/2017 - 20:22h

yasminemm escreveu:

Pessoal, alguém poderia me ajudar pq ele cai direto no primeiro IF mesmo que eu diga que o processo é TESTE00FI?

echo "PROCESSO:"
read id_processo

if [ ${id_processo:11:2}="WI" ]; then
echo "FOLDER_TAM:"
read folder
echo ""
echo "STAGE"
read stage
echo ""
echo "TABELA ADABAS"
read table
echo ""
echo "FN:"
read fn
echo "Unix: WI"
echo -e "nohup execods ODS1S000019CE \&\n"
echo -e "nohup execods $id_processo \&\n"
echo -e "nohup execods ODS1S000020CE"
echo ""
echo "TB_PROCESSO:"
echo "INSERT INTO TB_PROCESSO VALUES( '$id_processo', '$id_processo','Carga da stage $stage',NULL,11,${id_processo:7:4}, NULL,'$folder','1S', SYSDATE, 'S');"
echo ""
echo "CT_OPCOES_PWX:"
while ((${#fn}<4));do
fn=$(sed 's/^/0/' <<< "$fn")
done
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'DF','SAC_DF0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'GO','SAC_GO0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'MS','SAC_MS0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'MT','SAC_MT0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'AC','SAC_AC0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'RO','SAC_RO0122F$fn','PWX_NRDB_R2_CEN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'SC','SAC_SC0122F$fn','PWX_NRDB_R2_SUL',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'RS','SAC_RS0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'CR','SAC_CR0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'PR','SAC_PR0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'CO','SAC_CO0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'FR','SAC_FR0122F$fn','PWX_NRDB_R2_PRN',SYSDATE,SYSDATE,'$table');"
echo "INSERT INTO CT_OPCOES_PWX VALUES($id_processo,'BR','SAC_BR0122F$fn','PWX_NRDB_R2_SUL',SYSDATE,SYSDATE,'$table');"
echo ""

elif [ ${id_processo:11:2}="FI" ]; then
echo "Unix: WI"
echo ""
echo -e "nohup execods ODS1S000019CE \&\n"
echo -e "nohup execods $id_processo \&\n"
echo -e "nohup execods ODS1S000020CE"

fi


Boa noite yasminemm.
Verifique o comando "${var:N:tam}",
Pois, se "N" for menor que o nº de caracteres de "var", o resultado não será o esperado.
Se o nº o nº de caracteres de "var" não é constante e pelo que parece quer "pegar os dois ultimos, use:
var ="TESTE00FI"
grep -Eo '.{2}$' <<< "$var"
SAíDA
FI
Para "pegar" os dois ultimos caracteres, independentemente do "tamanho" da "var".

Att.:
Marcelo Oliver


4. Re: Problemas com IF e ELIF [RESOLVIDO]

yasmine malafaia de miranda
yasminemm

(usa Ubuntu)

Enviado em 01/05/2017 - 17:22h

muito obrigada pessoal! deu certo


5. Re: Problemas com IF e ELIF [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/05/2017 - 17:39h

Só uma última dica:

echo "FOLDER_TAM:"
read folder
echo ""
echo "STAGE"
read stage
echo ""
echo "TABELA ADABAS"
read table
echo ""
echo "FN:"


Você pode substituir

echo "FOLDER_TAM:"
read folder


por

read -p "FOLDER_TAM: " folder 


que economiza um comando.

ou substituir

echo "" 
echo "STAGE"


por

echo
echo "STAGE"


ou

echo -e "\nSTAGE" 


parecido com C.

De qualquer jeito diminui-se o tamanho do código.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts