Array vazia

1. Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 08/05/2017 - 21:59h

Boa noite, estou retornando valores de um banco mysql em uma array, porém quando um dos valores é vazio ele atribui o proximo valor onde deveria ficar vazio, o que posso fazer?

function Carrega_configAlertas() {
query="select * from configAlertas WHERE id='1';"
OIFS="$IFS" ;
while IFS="$OIFS" read -a line
do
id=${line[0]} EMAIL_DE=${line[1]} SERVIDOR_SMTP=${line[2]} SENHA=${line[3]} EMAIL_PARA=${line[4]} EMAIL_PARA2=${line[5]} NUMERO=${line[6]}
done < <(mysql -u${SQL_USER} -p${SQL_SENHA} ${SQL_DATABASE} -e "${query}" -N -s)
}


Esta é a função que estou utilizando, porém quando a variavel EMAIL_PARA2 é vazia ele atribui o NUMERO em seu lugar.


  


2. Re: Array vazia

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/05/2017 - 22:45h

Williamm escreveu:

Boa noite, estou retornando valores de um banco mysql em uma array, porém quando um dos valores é vazio ele atribui o proximo valor onde deveria ficar vazio, o que posso fazer?

function Carrega_configAlertas() {
query="select * from configAlertas WHERE id='1';"
OIFS="$IFS" ;
while IFS="$OIFS" read -a line
do
id=${line[0]} EMAIL_DE=${line[1]} SERVIDOR_SMTP=${line[2]} SENHA=${line[3]} EMAIL_PARA=${line[4]} EMAIL_PARA2=${line[5]} NUMERO=${line[6]}
done < <(mysql -u${SQL_USER} -p${SQL_SENHA} ${SQL_DATABASE} -e "${query}" -N -s)
}


Esta é a função que estou utilizando, porém quando a variavel EMAIL_PARA2 é vazia ele atribui o NUMERO em seu lugar.


Williamm, boa noite.
Na linha:
while IFS="$OIFS" read -a line
Defina o IFS para o SEPARADOR de CAMPO que esta usando, e não para o IFS do BASH...
Se usa ":",
faça:
while IFS=":" read -a line;do . . .

att.:
marcelo oliver









3. Re: Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 09/05/2017 - 08:25h

Bom dia, tentei com ":", ";", "-", e todos retornam iguais, tenho que alterar algo a mais?


4. Re: Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 09/05/2017 - 09:05h

Tentei assim também...

OIFS="$IFS" ; IFS=$'\n' ; oset="$-" ; set -f
while IFS="$OIFS" read -a line
do



5. Re: Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 09/05/2017 - 09:15h

Utilizando desta forma:

function Carrega_configAlertas() {
query="select * from configAlertas WHERE id='1';"
OIFS="$IFS" ; IFS=$'\n'
while IFS="$OIFS" read -a line
do
id=${line[0]} EMAIL_DE=${line[1]} SERVIDOR_SMTP=${line[2]} SENHA=${line[3]} EMAIL_PARA=${line[4]} EMAIL_PARA2=${line[5]} NUMERO=${line[6]}
done < <(mysql -u${SQL_USER} -p${SQL_SENHA} ${SQL_DATABASE} -e "${query}" -N -s)
}

Carrega_configAlertas
echo "$id - $EMAIL_DE - $SERVIDOR_SMTP - $SENHA - $EMAIL_PARA - $EMAIL_PARA2 - $NUMERO"

O retorno é este:

1 - email_de@email.com.br - smtp.email.com.br:porta - senha - email_para@email.com.br - 0 -

E gostaria que fosse assim:

1 - email_de@email.com.br - smtp.email.com.br:porta - senha - email_para@email.com.br - - 0




6. Re: Array vazia

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2017 - 12:27h

Williamm escreveu:

Utilizando desta forma:

function Carrega_configAlertas() {
query="select * from configAlertas WHERE id='1';"
OIFS="$IFS" ; IFS=$'\n'
while IFS="$OIFS" read -a line
do
id=${line[0]} EMAIL_DE=${line[1]} SERVIDOR_SMTP=${line[2]} SENHA=${line[3]} EMAIL_PARA=${line[4]} EMAIL_PARA2=${line[5]} NUMERO=${line[6]}
done < <(mysql -u${SQL_USER} -p${SQL_SENHA} ${SQL_DATABASE} -e "${query}" -N -s)
}

Carrega_configAlertas
echo "$id - $EMAIL_DE - $SERVIDOR_SMTP - $SENHA - $EMAIL_PARA - $EMAIL_PARA2 - $NUMERO"

O retorno é este:

1 - email_de@email.com.br - smtp.email.com.br:porta - senha - email_para@email.com.br - 0 -

E gostaria que fosse assim:

1 - email_de@email.com.br - smtp.email.com.br:porta - senha - email_para@email.com.br - - 0



Boa tarde Williamm.
O MYSQL utiliza (TAB) como IFS....
Portanto, faça:
while IFS=$'\t' read -a CAMPO;do . . . 


Att.:
Marcelo Oliver


7. Re: Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 09/05/2017 - 13:16h


Boa tarde Williamm.
O MYSQL utiliza (TAB) como IFS....
Portanto, faça:
while IFS=$'\t' read -a CAMPO;do . . . 


Att.:
Marcelo Oliver


Funciona, mas a saída é a mesma, ele acaba substituindo onde estaria vazio pela próxima array..


8. Re: Array vazia

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2017 - 16:14h

Williamm escreveu:


Boa tarde Williamm.
O MYSQL utiliza (TAB) como IFS....
Portanto, faça:
while IFS=$'\t' read -a CAMPO;do . . . 


Att.:
Marcelo Oliver


Funciona, mas a saída é a mesma, ele acaba substituindo onde estaria vazio pela próxima array..


Tá PHODA heim.....
Posta um trecho do select....
Use o CODE para não perder a formataçao.

marcelo


9. Re: Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 09/05/2017 - 17:12h

Certo, segue ai..
select * from configAlertas WHERE id='1';


mysql> select * from configAlertas WHERE id='1';
+----+-----------------------+-------------------------+------------+-------------------------+-------------+---------+
| id | Email_De | SMTP | SenhaEmail | Email_Para | Email_Para2 | Celular |
+----+-----------------------+-------------------------+------------+-------------------------+-------------+---------+
| 1 | email_de@email.com.br | smtp.email.com.br:porta | senha | email_para@email.com.br | | 0 |
+----+-----------------------+-------------------------+------------+-------------------------+-------------+---------+
1 row in set (0,00 sec)



10. Re: Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 19/05/2017 - 15:58h

Sigo pesquisando e nada...


11. Re: Array vazia

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/05/2017 - 16:20h

Tem como fazer uma GAMBIARRA como trocar o espaço vazio por uma coisa louca tipo __XXXXXXXX__ e depois remover essa coisa louca para deixar os dois tracinhos com vazio entre eles?

É gambiarra. Se não tiver algo melhor, por favor releva :-P

----------------------------------------------------------------------------------------------------------------
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



12. Re: Array vazia

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 19/05/2017 - 16:26h

listeiro_037 escreveu:

Tem como fazer uma GAMBIARRA como trocar o espaço vazio por uma coisa louca tipo __XXXXXXXX__ e depois remover essa coisa louca para deixar os dois tracinhos com vazio entre eles?

É gambiarra. Se não tiver algo melhor, por favor releva :-P

----------------------------------------------------------------------------------------------------------------
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


Esse echo coloquei so para testar o que ele esta retornando, no momento estou utilizando os dois emails ai funciona, porém se deixar em branco a variavel que deveria receber o email 2 ( que seria em branco ) acaba recebendo o numero...



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts