Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
UNIDADE CURRICULAR:
Introdução aos Sistemas Operativos
DOCENTE:
Luís Rodolfo Serrado Gomes Marques de Sousa
DATA:
08 de junho de 2019
1
Índice
Índice................................................................................................................................ 2
Lista de Figuras................................................................................................................ 3
1. Introdução.................................................................................................................... 5
2. Desenvolvimento do Script......................................................................................... 6
2.1. Estrutura Principal........................................................................................... 6
3. Execução do Script.....................................................................................................16
4. Webgrafia................................................................................................................... 18
5. Anexos........................................................................................................................ 19
2
Lista de Figuras
Figura 1 : Fluxograma do script..............................................................................6
4
1. Introdução
Em Linux, os comandos base, são complementados por outros, desenvolvidos por
entusiastas, ou colaboradores, com o intuito de otimizar ou melhorar os mesmos.
5
2. Desenvolvimento do Script
O principal objetivo deste projeto era garantir que todos os gráficos eram
mostrados ao utilizador no terminal de maneira pseudográfica (através de
carateres ASCII).
De maneira a tornar o script o mais dinâmico possível, foi dada a oportunidade do
utilizador especificar o tempo de análise dos elementos do sistema operativo e
consequente atualização dos gráficos.
Visto que é possível aceder aos parâmetros de entrada de um script executado com
o intepretador Bash, foi esta a melhor maneira de estabelecer o tempo de
atualização.
6
Neste caso, foi preciso analisar o parâmetro $1, cujo valor é atribuído à variável
refresh. O parâmetro passa por uma verificação, através de uma regular
expression, que verifica se tal parâmetro é um digito.
Caso refresh seja um dígito, a função simplesmente retorna. Caso contrário, é
mostrada uma mensagem de erro e o script acaba a sua execução através da
instrução exit.
7
2.3. Valores dos Elementos do Sistema
A obtenção dos valores instantâneos dos elementos do sistema operativo
passaram pelo armazenamento do resultado da execução de variáveis de sistema
em variáveis locais (variáveis exclusivas ao script), que depois são adicionados a
arrays.
8
2.3.1.2. Utilização do CPU
A taxa de utilização do CPU é obtida através da execução do comando $ top -n1. O
último parâmetro especifica o número de vezes que os valores desse mesmo
comando são atualizados no ecrã (neste caso, uma única vez). A sua execução
resulta no seguinte output, e a parte a extrair foi assinalada a laranja:
A extração desse valor passou por várias manipulações. Primeiro, isolar a linha que
contém o valor e, posteriormente, obter a coluna e remover a casa decimal (bem
como a vírgula que a antecede). Para extrair o valor de utilização do CPU e realizar
todas as transformações supracitadas, os seguintes comandos foram utilizados:
10
2.3.1.4. Número de Processos
O número de processos a serem executados, em simultâneo, num sistema, é obtido
através do comando cuja figura abaixo ilustra:
11
Figura 13: Comando sensors.
Este foi, sem dúvida, o valor com extração mais complexa (em relação aos outros
valores). No entanto, apesar da complexidade, o script tornou-se ainda mais
dinâmico.
O comportamento deste excerto de código não foi testado em sistemas com mais
do que um processador.
12
Figura 16: Preenchimento de arrays e shift left dos valores.
13
Figura 18: Preenchimento dos arrays do gráfico.
No final de todas as verificações (de cada valor de cada um dos cinco arrays), os
gráficos são mostrados. Cada linha do gráfico é percorrida e imprimida no terminal,
tal como o código na figura abaixo mostra:
14
2.5. Demonstração de Estatísticas
De maneira a complementar todo o trabalho já efetuado, foi introduzida a
funcionalidade de mostrar as estatísticas da máquina aquando da finalização de
execução do programa (CTRL+C).
No início do programa, são declaradas arrays vazias que irão, posteriormente,
conter o valor instantâneo de cada elemento.
15
3. Execução do Script
Em jeito de conclusão, são anexados algumas capturas de ecrã que demonstram o
programa em execução e o sucesso do trabalho.
16
Conclui-se, portanto, que o trabalho foi executado com sucesso, atendendo aos
requisitos mencionados no enunciado do mesmo. Para além da aprendizagem de
uma nova linguagem de programação com a qual nunca tinha trabalhado, consegui
criar uma ferramenta útil para a análise dos recursos do sistema.
17
4. Webgrafia
https://books.goalkicker.com/BashBook/
http://stackoverflow.com/
https://www.reddit.com/r/bash/
18
5. Anexos
5.1. Código do Script
#!/bin/bash
refresh=$1
verificacoesFeitas=0
ARRAY_MEM=(0 0 0 0 0 0 0 0 0 0)
ARRAY_CPU=(0 0 0 0 0 0 0 0 0 0)
ARRAY_DSK=(0 0 0 0 0 0 0 0 0 0)
ARRAY_PS=(0 0 0 0 0 0 0 0 0 0)
ARRAY_TEMP=(0 0 0 0 0 0 0 0 0 0)
MEDIA_MEM=()
MEDIA_CPU=()
MEDIA_DSK=()
MEDIA_PS=()
MEDIA_TEMP=()
function tratarInterrupcao() {
TOTALMEDIAMEM=0
TOTALMEDIACPU=0
TOTALMEDIADSK=0
TOTALMEDIAPS=0
TOTALMEDIATEMP=0
clear
exit 1;
}
function criarGraficos() {
declare -a graficoMEM
declare -a graficoCPU
declare -a graficoDSK
declare -a graficoPS
declare -a graficoTEMP
20
graficoCPU[1]="100\u250C"
graficoCPU[2]=" 90\u251C"
graficoCPU[3]=" 80\u251C"
graficoCPU[4]=" 70\u251C"
graficoCPU[5]=" 60\u251C"
graficoCPU[6]=" 50\u251C"
graficoCPU[7]=" 40\u251C"
graficoCPU[8]=" 30\u251C"
graficoCPU[9]=" 20\u251C"
graficoCPU[10]=" 10\u251C"
graficoCPU[11]="
0\u2534\u252C\u2500\u252C\u2500\u252C\u2500\u252C\u2500\u25
2C\u2500\u252C\u2500\u252C\u2500\u252C\u2500\u252C\u2500\u2
52C\u2500"
25
;;
20)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2584 "
graficoCPU[8]+=" "
graficoCPU[7]+=" "
graficoCPU[6]+=" "
graficoCPU[5]+=" "
graficoCPU[4]+=" "
graficoCPU[3]+=" "
graficoCPU[2]+=" "
graficoCPU[1]+=" "
;;
30)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
graficoCPU[8]+="\u2584 "
graficoCPU[7]+=" "
graficoCPU[6]+=" "
graficoCPU[5]+=" "
graficoCPU[4]+=" "
graficoCPU[3]+=" "
graficoCPU[2]+=" "
graficoCPU[1]+=" "
;;
40)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
graficoCPU[8]+="\u2588 "
graficoCPU[7]+="\u2584 "
graficoCPU[6]+=" "
graficoCPU[5]+=" "
graficoCPU[4]+=" "
graficoCPU[3]+=" "
graficoCPU[2]+=" "
graficoCPU[1]+=" "
;;
50)
26
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
graficoCPU[8]+="\u2588 "
graficoCPU[7]+="\u2588 "
graficoCPU[6]+="\u2584 "
graficoCPU[5]+=" "
graficoCPU[4]+=" "
graficoCPU[3]+=" "
graficoCPU[2]+=" "
graficoCPU[1]+=" "
;;
60)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
graficoCPU[8]+="\u2588 "
graficoCPU[7]+="\u2588 "
graficoCPU[6]+="\u2588 "
graficoCPU[5]+="\u2584 "
graficoCPU[4]+=" "
graficoCPU[3]+=" "
graficoCPU[2]+=" "
graficoCPU[1]+=" "
;;
70)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
graficoCPU[8]+="\u2588 "
graficoCPU[7]+="\u2588 "
graficoCPU[6]+="\u2588 "
graficoCPU[5]+="\u2588 "
graficoCPU[4]+="\u2584 "
graficoCPU[3]+=" "
graficoCPU[2]+=" "
graficoCPU[1]+=" "
;;
80)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
27
graficoCPU[8]+="\u2588 "
graficoCPU[7]+="\u2588 "
graficoCPU[6]+="\u2588 "
graficoCPU[5]+="\u2588 "
graficoCPU[4]+="\u2588 "
graficoCPU[3]+="\u2584 "
graficoCPU[2]+=" "
graficoCPU[1]+=" "
;;
90)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
graficoCPU[8]+="\u2588 "
graficoCPU[7]+="\u2588 "
graficoCPU[6]+="\u2588 "
graficoCPU[5]+="\u2588 "
graficoCPU[4]+="\u2588 "
graficoCPU[3]+="\u2588 "
graficoCPU[2]+="\u2584 "
graficoCPU[1]+=" "
;;
100)
graficoCPU[10]+="\u2588 "
graficoCPU[9]+="\u2588 "
graficoCPU[8]+="\u2588 "
graficoCPU[7]+="\u2588 "
graficoCPU[6]+="\u2588 "
graficoCPU[5]+="\u2588 "
graficoCPU[4]+="\u2588 "
graficoCPU[3]+="\u2588 "
graficoCPU[2]+="\u2588 "
graficoCPU[1]+="\u2584 "
;;
esac
done
28
case $valorDSK in
0)
graficoDSK[10]+=" "
graficoDSK[9]+=" "
graficoDSK[8]+=" "
graficoDSK[7]+=" "
graficoDSK[6]+=" "
graficoDSK[5]+=" "
graficoDSK[4]+=" "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
10)
graficoDSK[10]+="\u2584 "
graficoDSK[9]+=" "
graficoDSK[8]+=" "
graficoDSK[7]+=" "
graficoDSK[6]+=" "
graficoDSK[5]+=" "
graficoDSK[4]+=" "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
20)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2584 "
graficoDSK[8]+=" "
graficoDSK[7]+=" "
graficoDSK[6]+=" "
graficoDSK[5]+=" "
graficoDSK[4]+=" "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
30)
29
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
graficoDSK[8]+="\u2584 "
graficoDSK[7]+=" "
graficoDSK[6]+=" "
graficoDSK[5]+=" "
graficoDSK[4]+=" "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
40)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
graficoDSK[8]+="\u2588 "
graficoDSK[7]+="\u2584 "
graficoDSK[6]+=" "
graficoDSK[5]+=" "
graficoDSK[4]+=" "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
50)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
graficoDSK[8]+="\u2588 "
graficoDSK[7]+="\u2588 "
graficoDSK[6]+="\u2584 "
graficoDSK[5]+=" "
graficoDSK[4]+=" "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
60)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
30
graficoDSK[8]+="\u2588 "
graficoDSK[7]+="\u2588 "
graficoDSK[6]+="\u2588 "
graficoDSK[5]+="\u2584 "
graficoDSK[4]+=" "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
70)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
graficoDSK[8]+="\u2588 "
graficoDSK[7]+="\u2588 "
graficoDSK[6]+="\u2588 "
graficoDSK[5]+="\u2588 "
graficoDSK[4]+="\u2584 "
graficoDSK[3]+=" "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
80)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
graficoDSK[8]+="\u2588 "
graficoDSK[7]+="\u2588 "
graficoDSK[6]+="\u2588 "
graficoDSK[5]+="\u2588 "
graficoDSK[4]+="\u2588 "
graficoDSK[3]+="\u2584 "
graficoDSK[2]+=" "
graficoDSK[1]+=" "
;;
90)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
graficoDSK[8]+="\u2588 "
graficoDSK[7]+="\u2588 "
31
graficoDSK[6]+="\u2588 "
graficoDSK[5]+="\u2588 "
graficoDSK[4]+="\u2588 "
graficoDSK[3]+="\u2588 "
graficoDSK[2]+="\u2584 "
graficoDSK[1]+=" "
;;
100)
graficoDSK[10]+="\u2588 "
graficoDSK[9]+="\u2588 "
graficoDSK[8]+="\u2588 "
graficoDSK[7]+="\u2588 "
graficoDSK[6]+="\u2588 "
graficoDSK[5]+="\u2588 "
graficoDSK[4]+="\u2588 "
graficoDSK[3]+="\u2588 "
graficoDSK[2]+="\u2588 "
graficoDSK[1]+="\u2584 "
;;
esac
done
32
10)
graficoPS[10]+="\u2584 "
graficoPS[9]+=" "
graficoPS[8]+=" "
graficoPS[7]+=" "
graficoPS[6]+=" "
graficoPS[5]+=" "
graficoPS[4]+=" "
graficoPS[3]+=" "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
20)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2584 "
graficoPS[8]+=" "
graficoPS[7]+=" "
graficoPS[6]+=" "
graficoPS[5]+=" "
graficoPS[4]+=" "
graficoPS[3]+=" "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
30)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2584 "
graficoPS[7]+=" "
graficoPS[6]+=" "
graficoPS[5]+=" "
graficoPS[4]+=" "
graficoPS[3]+=" "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
40)
graficoPS[10]+="\u2588 "
33
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2588 "
graficoPS[7]+="\u2584 "
graficoPS[6]+=" "
graficoPS[5]+=" "
graficoPS[4]+=" "
graficoPS[3]+=" "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
50)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2588 "
graficoPS[7]+="\u2588 "
graficoPS[6]+="\u2584 "
graficoPS[5]+=" "
graficoPS[4]+=" "
graficoPS[3]+=" "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
60)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2588 "
graficoPS[7]+="\u2588 "
graficoPS[6]+="\u2588 "
graficoPS[5]+="\u2584 "
graficoPS[4]+=" "
graficoPS[3]+=" "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
70)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2588 "
34
graficoPS[7]+="\u2588 "
graficoPS[6]+="\u2588 "
graficoPS[5]+="\u2588 "
graficoPS[4]+="\u2584 "
graficoPS[3]+=" "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
80)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2588 "
graficoPS[7]+="\u2588 "
graficoPS[6]+="\u2588 "
graficoPS[5]+="\u2588 "
graficoPS[4]+="\u2588 "
graficoPS[3]+="\u2584 "
graficoPS[2]+=" "
graficoPS[1]+=" "
;;
90)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2588 "
graficoPS[7]+="\u2588 "
graficoPS[6]+="\u2588 "
graficoPS[5]+="\u2588 "
graficoPS[4]+="\u2588 "
graficoPS[3]+="\u2588 "
graficoPS[2]+="\u2584 "
graficoPS[1]+=" "
;;
100)
graficoPS[10]+="\u2588 "
graficoPS[9]+="\u2588 "
graficoPS[8]+="\u2588 "
graficoPS[7]+="\u2588 "
graficoPS[6]+="\u2588 "
35
graficoPS[5]+="\u2588 "
graficoPS[4]+="\u2588 "
graficoPS[3]+="\u2588 "
graficoPS[2]+="\u2588 "
graficoPS[1]+="\u2584 "
;;
esac
done
36
graficoTEMP[9]+="\u2584 "
graficoTEMP[8]+=" "
graficoTEMP[7]+=" "
graficoTEMP[6]+=" "
graficoTEMP[5]+=" "
graficoTEMP[4]+=" "
graficoTEMP[3]+=" "
graficoTEMP[2]+=" "
graficoTEMP[1]+=" "
;;
30)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2584 "
graficoTEMP[7]+=" "
graficoTEMP[6]+=" "
graficoTEMP[5]+=" "
graficoTEMP[4]+=" "
graficoTEMP[3]+=" "
graficoTEMP[2]+=" "
graficoTEMP[1]+=" "
;;
40)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2588 "
graficoTEMP[7]+="\u2584 "
graficoTEMP[6]+=" "
graficoTEMP[5]+=" "
graficoTEMP[4]+=" "
graficoTEMP[3]+=" "
graficoTEMP[2]+=" "
graficoTEMP[1]+=" "
;;
50)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2588 "
37
graficoTEMP[7]+="\u2588 "
graficoTEMP[6]+="\u2584 "
graficoTEMP[5]+=" "
graficoTEMP[4]+=" "
graficoTEMP[3]+=" "
graficoTEMP[2]+=" "
graficoTEMP[1]+=" "
;;
60)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2588 "
graficoTEMP[7]+="\u2588 "
graficoTEMP[6]+="\u2588 "
graficoTEMP[5]+="\u2584 "
graficoTEMP[4]+=" "
graficoTEMP[3]+=" "
graficoTEMP[2]+=" "
graficoTEMP[1]+=" "
;;
70)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2588 "
graficoTEMP[7]+="\u2588 "
graficoTEMP[6]+="\u2588 "
graficoTEMP[5]+="\u2588 "
graficoTEMP[4]+="\u2584 "
graficoTEMP[3]+=" "
graficoTEMP[2]+=" "
graficoTEMP[1]+=" "
;;
80)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2588 "
graficoTEMP[7]+="\u2588 "
graficoTEMP[6]+="\u2588 "
38
graficoTEMP[5]+="\u2588 "
graficoTEMP[4]+="\u2588 "
graficoTEMP[3]+="\u2584 "
graficoTEMP[2]+=" "
graficoTEMP[1]+=" "
;;
90)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2588 "
graficoTEMP[7]+="\u2588 "
graficoTEMP[6]+="\u2588 "
graficoTEMP[5]+="\u2588 "
graficoTEMP[4]+="\u2588 "
graficoTEMP[3]+="\u2588 "
graficoTEMP[2]+="\u2584 "
graficoTEMP[1]+=" "
;;
100)
graficoTEMP[10]+="\u2588 "
graficoTEMP[9]+="\u2588 "
graficoTEMP[8]+="\u2588 "
graficoTEMP[7]+="\u2588 "
graficoTEMP[6]+="\u2588 "
graficoTEMP[5]+="\u2588 "
graficoTEMP[4]+="\u2588 "
graficoTEMP[3]+="\u2588 "
graficoTEMP[2]+="\u2588 "
graficoTEMP[1]+="\u2584 "
;;
esac
done
clear
echo -e "\n\n\n\n"
39
echo -e "${graficoMEM[$idx]} ${graficoCPU[$idx]}"
done
echo -e "\n"
echo -e "\n"
return
}
function adicionarValores() {
TOTAL_MEM=$(free | head -n 2 | tail -n 1 | cut -d ' ' -f9)
# Valor total da memória.
USADO_MEM=$(free | head -n 2 | tail -n 1 | cut -d ' ' -f14)
# Valor usado da memória.
VALOR_MEM=$(($USADO_MEM * 100)) # O arredonda todas as
divisões para o número inteiro menor, portanto multiplica-
se por 100.
VALOR_MEM=$(($VALOR_MEM / $TOTAL_MEM)) # Aritmética para
obtenção do valor de ocupação instantânea da memória.
MEDIA_MEM+=($VALOR_MEM)
VALOR_MEM=$(($VALOR_MEM/10)) # Arredondamento para o
múltiplo de 10 inferior a VALOR_MEM.
VALOR_MEM=$(($VALOR_MEM * 10)) # Arredondamento para o
múltiplo de 10 inferior a VALOR_MEM. Ex: (55/10) = 5.5 = 5;
5 * 10 = 50
VALOR_CPU=$(top -n1 | head -n3 | tail -n1 | cut -d ' ' -f2
| rev | cut -c 3- | rev)
if [ $VALOR_CPU = " " ]; then
40
VALOR_CPU=$(top -n1 | head -n3 | tail -n1 | cut -d
' ' -f3 | rev | cut -c 3- | rev)
fi
MEDIA_CPU+=($VALOR_CPU)
VALOR_CPU=$(($VALOR_CPU / 10))
VALOR_CPU=$(($VALOR_CPU * 10))
for (( i = 0; i < 11; i++ ))
do
ARRAY_CPU[$i]=${ARRAY_CPU[i+1]}
done
ARRAY_CPU[9]=$VALOR_CPU
VALOR_PS=$(($VALOR_PS / 10))
VALOR_PS=$(($VALOR_PS * 10))
41
for (( i = 0; i < 11; i++ ))
do
ARRAY_PS[$i]=${ARRAY_PS[i+1]} # Ex: ARRAY_PS[1] =
ARRAY_PS[2]
done
ARRAY_PS[9]=$VALOR_PS # O último valor é preenchido com
o valor obtido neste ciclo.
((VALOR_TEMP=$VALOR_TEMP/($NUMCORES-1))) # VALOR_TEMP
passa a ser a média da temperatura de todos so cores.
$NUMCORES inclui a contagem de uma linha em branco, pelo
que essa linha é removida com $NUMCORES-1.
MEDIA_TEMP+=($VALOR_TEMP)
((VALOR_TEMP=$VALOR_TEMP / 10))
((VALOR_TEMP=$VALOR_TEMP * 10))
return
}
42
function verificarParametros {
if ! [[ $refresh == ?(-)+([0-9]) ]];
then
echo -e "\e[91mUSO: $ status [refresh: INT]\trefresh:
0-\u221e" >&2;
exit;
fi
return
}
while (( 1 == 1)); do
adicionarValores
criarGraficos
(( verificacoesFeitas++ ))
sleep $refresh
done
43