Pular para o conteúdo

Array vazia

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar
01 02

1. Array vazia

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.

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: Array vazia

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

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

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

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

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

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

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

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

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

Sigo pesquisando e nada...

11. Re: Array vazia

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

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

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder