Como faço este laço? [RESOLVIDO]

1. Como faço este laço? [RESOLVIDO]

Gabriel Mota
gabrielvmota

(usa Ubuntu)

Enviado em 02/03/2016 - 15:32h

Preciso fazer uma lista para um trabalho, mas não consigo realizar.
A lista deve fornecer na ordem $ANO$MES$DIA, e cada variável varia de 1 em 1. Tentei dessa forma:

for ano in $(seq 1998 2004)
do
echo $ano
done

for mes in $(seq 1 12)
do
echo $mes
done

for dia in $(seq 1 31)
do
echo $dia
done


Funcionou mas separadamente. Eu preciso que elas fiquem um ao lado do outro seguindo o padrão $ANO$MES$DIA.
Então eu tentei dessa forma:


for ano in $(seq 1998 2004); do

for mes in $(1 12);do

for dia in $(seq 1 31); do

echo $ano$mes$dia

done
done
done

E não consegui. Alguém poderia ajudar?

Obrigado


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/03/2016 - 21:24h

[quote]gabrielvmota escreveu:

Preciso fazer uma lista para um trabalho, mas não consigo realizar.
A lista deve fornecer na ordem $ANO$MES$DIA, e cada variável varia de 1 em 1. Tentei dessa forma:
Funcionou mas separadamente. Eu preciso que elas fiquem um ao lado do outro seguindo o padrão $ANO$MES$DIA.
Então eu tentei dessa forma:
Obrigado
----------------------------------------------
Boa noite gabrielvmota.
Montei um scriptizinho, verifique se é isso que quer....
O ULTIMO dia do mês é o CORRETO, tipo:
2016/JANEIRO/31
2016/FEVEREIRO/29
.
.
.

Segue o código:
#!/bin/bash
####################################
## marcelo oliver-FEV/2016-Rev:00 ##
####################################

for MES in {01..12};do
for ANO in {1998..2016};do
LASTDAY=$(echo $(cal $MES $ANO) | awk '{print $NF}')
for DIA in $(eval echo {01..$LASTDAY});do
echo "$ANO:$MES:$DIA"
done;done;done | sort -n > DIAMESANO.txt
printf "\n O RESULTADO ENCONTRA-SE EM:\n $PWD/DIAMESANO.txt\n"


PARA BAIXAR:
https://drive.google.com/open?id=0B2Fv6_t08qoMQ0ZDMm5tcEM1dG8 


OBS.: Se resolver, marque como resolvido.
Se gostar da solução, marque como melhor resposta . . .
Assim ganho uns pontinhos, o que incentiva continuar ajudando :)


att.:
marcelo oliver


3. Re: Como faço este laço?

Renan Arantes
R3nan

(usa Debian)

Enviado em 02/03/2016 - 18:00h


#!/bin/bash
for ano in $(seq 1998 2004); do
for mes in $(seq 1 12); do
for dia in $(seq 1 31); do
echo $ano"/"$mes"/"$dia
done
done
done



testa ai, so pra lembrar, nem todo mes tem 31 dias precisaria tratar isso no script


4. Re: Como faço este laço? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/03/2016 - 18:04h

echo {1998..2004}{01..12}{01..31} | tr ' ' '\n'

Falta corrigir datas esdrúxulas como 31 de fevereiro.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

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



5. Re: Como faço este laço? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/03/2016 - 19:11h

for i in echo {1998..2004}{01..12}{01..31}
do
echo $i
done


Falta corrigir datas esdrúxulas como 31 de fevereiro.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

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