Enviado em 26/04/2020 - 18:31h
Boa tarde, estou tentando realizar um exercício de shell script, no qual eu tenho que desenvolver um script que exiba a estação do ano conforme a data do sistema, estou com bastante dificuldade pois sou iniciante no linux, e em shell etc. Alguém poderia me dizer o que tem de errado?Enviado em 26/04/2020 - 18:50h
O problema não parece ser com o shell ou com o Linux, mas sim com os testes condicionais que você está usando. A sintaxe está correta, mas as condições lógicas estão erradas.Enviado em 26/04/2020 - 21:06h
Enviado em 28/04/2020 - 18:16h
2005 20 09 34 21 03 46 22 19 23 21 15 35 2006 20 15 26 21 09 26 23 01 03 21 21 22 2007 20 21 07 21 15 06 23 06 51 22 03 08 2008 20 02 48 20 20 59 22 12 44 21 09 04 2009 20 08 44 21 02 45 22 18 18 21 14 47 2010 20 14 32 21 08 28 23 00 09 21 20 38 2011 20 20 21 21 14 16 23 06 04 22 02 30 2012 20 02 14 20 20 09 22 11 49 21 08 11 2013 20 08 02 21 02 04 22 17 44 21 14 11 2014 20 13 57 21 07 51 22 23 29 21 20 03 2015 20 19 45 21 13 38 23 05 20 22 01 48 2016 20 01 30 20 19 34 22 11 21 21 07 44 2017 20 07 29 21 01 24 22 17 02 21 13 28 2018 20 13 15 21 07 07 22 22 54 21 19 23 2019 20 18 58 21 12 54 23 04 50 22 01 19 2020 20 00 50 20 18 44 22 10 31 21 07 02
Enviado em 29/04/2020 - 23:24h
Boa noite Cadu, e o script das estações do ano, consegui?Enviado em 01/05/2020 - 16:04h
Que droga!Enviado em 01/05/2020 - 19:14h
#/bin/bash clear; var0=',$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13'; form='%s:%s:%s\n%s:%s:%s\n%s:%s:%s\n%s:%s:%s\n'; EST="Out,Inv,Pri,Ver"; url="https://www.iag.usp.br/astronomia/inicio-das-estacoes-do-ano"; dest="estacoes.txt"; line(){ printf "%40s" ''|tr ' ' '-';} mes=$(date +%m); #read -n2 -p "Informe o Mês: " mes ##Retire o comentário, para testar com um Mês diferente do corrente case ${mes} in 0[12]) stt="Verão";; 0[45]) stt="Outono";; 0[78]) stt="Inverno";; 1[01]) stt="Primavera";; 0[369]|12) stt="Calcular";; esac; [[ ${stt} != "Calcular" ]] && { echo -e "\n$(line)\nMês:$mes\nEstação: ${stt}\n$(line)\n";exit 1; } ini=$(date +%s.%N); echo -e "\n$(line)\nCalculando:\nIni:[$ini]" #Gera arq com as Datas de Início das estações. ano=$(date +%Y); [ ! -e ${dest} ] && lynx -accept_all_cookies -dump $url|awk '/^ +'${ano}' /{printf "'${form}'" '${var0}'}' > ${dest} hoje=$(date +%s); #Gera as variáveis das estações. eval $(awk -F":" 'BEGIN{split("'${EST}'",est, ",")} {print est[NR]"=$(date -d \""'${ano}'"-0"(NR*3)"-"$1,$2":"$3":00\" +%s)"}' ${dest}); #echo -e "\n$(line)\nOut: $Out => $(date -d"@$Out")\nInv: $Inv => $(date -d"@$Inv")\nPri: $Pri => $(date -d"@$Pri")\nVer: $Ver => $(date -d"@$Ver")\n$(line)" if (($hoje >= $Ver || $hoje < $Out ));then stt="Verão" elif (($hoje >= $Pri && $hoje < $Ver));then stt="Primavera" elif (($hoje >= $Inv && $hoje < $Pri));then stt="Inverno" elif (($hoje >= $Out && $hoje < $Inv));then stt="Outono" fi fin=$(date +%s.%N); tempo=$(awk '{printf "%.9f" ,($1-$2)}' <<< "$fin $ini"); echo -e "Fim:[${fin}]\nTempo:[$tempo]\n$(date -d"@${hoje}" +%x' as '%X).\nEstação: $stt\n$(line)\n"
Enviado em 13/05/2020 - 01:29h
Enviado em 13/05/2020 - 18:54h
Enviado em 17/05/2020 - 08:44h
#!/usr/bin/perl # Em resposta a https://www.vivaolinux.com.br/topico/Shell-Script/Script-das-estacoes/ # # Outros links, que serviram como referência: # • https://en.wikipedia.org/wiki/Year#Gregorian_calendar # • https://en.wikipedia.org/wiki/Tropical_year # • https://en.wikipedia.org/wiki/Axial_precession # • https://en.wikipedia.org/wiki/Astronomical_nutation # • https://www.timeanddate.com/calendar/seasons.html?year=2000&n=161 use strict; use POSIX; use vars qw($T0 $TEM $TSJ $TES $TSD $SECONDS_IN_YEAR); BEGIN { # Altera temporariamente o fuso-horário para poder fixar UTC como referência. my $saved_timezone=$ENV{TZ}; $ENV{TZ}="UTC"; tzset(); # Tempo de referência: 2000/01/01 00:00:00 UTC. $T0=mktime(0, 0, 0, 1, 0, 100); # Tempos relativos das efemérides no ano 2000 (todos os relógios em UTC). $TEM=mktime(0, 35, 7, 20, 2, 100)-$T0; # Equinócio de março (2000/03/20 07:35) $TSJ=mktime(0, 47, 1, 21, 5, 100)-$T0; # Solstício de junho (2000/06/21 01:47) $TES=mktime(0, 27, 17, 22, 8, 100)-$T0; # Equinócio de setembro (2000/09/22 17:27) $TSD=mktime(0, 37, 17, 21, 11, 100)-$T0; # Solstício de dezembro (2000/12/21 17:37) # Duração do ano tropical médio no ano 2000. #$days_in_year=365.2421896698; $SECONDS_IN_YEAR=86400*365.2421896698; # Restaura fuso-horário padrão. if(defined($saved_timezone)){ $ENV{TZ}=$saved_timezone; } else{ delete($ENV{TZ}); } tzset(); } # Função que informa a estação aproximada, assumindo as referências do ano # 2000 para as estações em cada ano. Isso tem erros, por causa dos movimentos # de precessão (mais ou menos previsível) e nutação (mensurável, mas pouco # previsível) da Terra e movimentos do próprio Sol, mas esse erro, dentro de # intervalo pequeno de anos (por exemplo, menor que uns 50 anos) deve ficar # dentro da faixa de ±60min. # # A função recebe o timestamp da hora de interesse (nº de segundos decorridos # desde 1970/01/01 00:00:00 UTC, que é o formato padrão do UNIX e do C). sub tell_season ($) { my ($t_user)=@_; my ($n_years, $year_offset); $n_years=($t_user-$T0)/$SECONDS_IN_YEAR; $year_offset=($n_years-floor($n_years))*$SECONDS_IN_YEAR; return "verão" if $year_offset<$TEM || $year_offset>=$TSD; return "outono" if $year_offset<$TSJ; return "inverno" if $year_offset<$TES; return "primavera"; } # Mostra o modo de uso do programa. sub usage (\*) { my ($out)=@_; print $out <<EOM; Modo de uso: $0 [-H] ( -t | ( -p | -v | -o | -i ) AAAA | [data] ) -h | --help Mostra esta tela de ajuda. -H Imprime a hora, além da data. -t Imprime tabela com início de cada estação desde 2000 até 2050. -p AAAA Mostra início da primavera no ano AAAA. -v AAAA Mostra início do verão no ano AAAA. -o AAAA Mostra início do outono no ano AAAA. -i AAAA Mostra início do inverno no ano AAAA. data Mostra a estação na data informada (default: data corrente). Caso o campo "data" seja usado, ele deve estar no formato [AAAA/]mm/dd[ HH:MM[:SS]]. Se o ano for omitido, assume-se o corrente. Se a hora for omitida, assume-se 12:00. Se os segundos forem omitidos, assume-se 00. Para evitar grandes erros de precisão, os anos informados devem estar entre 2000 e 2050. EOM } #################### PROGRAMA PRINCIPAL #################### my ($table, $season, $year, $ts_fmt, $date); $ts_fmt="%m/%d"; my @args=@ARGV; my $arg; while(defined($arg=shift(@args))){ if($arg eq "-h" || $arg eq "--help"){ usage(*STDOUT); exit(0); } if($arg eq "-H"){ $ts_fmt="%m/%d %H:%M"; next; } if(!$table && !$season && !$date){ if($arg eq "-t"){ $table=1; next; } if($arg eq "-p"){ $season=$TES; } elsif($arg eq "-v"){ $season=$TSD; } elsif($arg eq "-o"){ $season=$TEM; } elsif($arg eq "-i"){ $season=$TSJ; } if($season){ if(!($year=shift(@args)) || $year=~/\D/){ usage(*STDERR); exit(1); } $year-=2000; next; } if($arg=~/^((\d+)\/)?(0?[1-9]|1[012])\/(0?[1-9]|[12]\d|3[01])(\s+([01]?\d|2[0-3]):([0-5]?\d)(:([0-5]?\d|6[01]))?)?$/){ my ($sec, $min, $hour, $day, $mon, $year); $sec=defined($9)? $9: 0; $min=defined($5)? $7: 0; $hour=defined($5)? $6: 12; $day=$4; $mon=$3-1; $year=defined($1)? $2-1900: (localtime(time()))[5]; $date=mktime($sec, $min, $hour, $day, $mon, $year); next; } } usage(*STDERR); exit(1); } if($table){ for( my ($to, $ti, $tp, $tv)=($TEM+$T0, $TSJ+$T0, $TES+$T0, $TSD+$T0); $to<=$T0+50*$SECONDS_IN_YEAR; $to+=$SECONDS_IN_YEAR, $ti+=$SECONDS_IN_YEAR, $tp+=$SECONDS_IN_YEAR, $tv+=$SECONDS_IN_YEAR ){ print strftime("%Y: $ts_fmt", localtime($to)), strftime(" | $ts_fmt", localtime($ti)), strftime(" | $ts_fmt", localtime($tp)), strftime(" | $ts_fmt\n", localtime($tv)) ; } } elsif($season){ print strftime("%Y/$ts_fmt\n", localtime($T0+$season+$year*$SECONDS_IN_YEAR)); } else{ $date=time() unless defined($date); print strftime("%Y/$ts_fmt: ", localtime($date)), tell_season($date), "\n"; } exit(0);
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano