Separei algumas dicas para Shell Script, deem uma analisada
Separei algumas dicas para Shell Script, deem uma analisada
→ Contar os caracteres de uma variável
→ Usando o comando cut
Mostrar somente a 3° coluna(de cada linha) do arquivo
Mostrar somente a 3° coluna EM DIANTE(de cada linha) do arquivo
O comando abaixo extrai o campo 1 (field) do arquivo /etc/passwd cujo delimitador de campo é “:” (delimiter)(para caracteres especiais como ‘(’ [parênteses] use uma barra antes ’(’ ).
Mostrar somente da 3° até a 6° coluna(de cada linha) do arquivo
Joga a saída(stdout) do comando cat para a entrada(stdin) do cut e a saída do cut para a entrada do sort (deixando em ordem alfabética)
→ Variáveis locais e o comando define:
Uma variável declarada como local é aquele que só é visível dentro do bloco de código em que ela aparece. Em uma função, uma variável local só tem sentido dentro desse bloco de função forma de declarar uma variável(aspas simples e colar igual(=))
→ Comando Shift:
Para trabalhar com parêmtros você pode utilizar o comando shift, que desloca parâmetros
Exemplo de como usar o shift (arquivo ./teste.sh):
exemplo com saida
→ A Variável RANDOM:
gerar um número randômico (aleatório) que seja até no máximo 60
→ O comando declare e o comando readonly
Use o comando ‘declare’ para definir atributos de variáveis e funções.
-r (readonly)
-i (integer/numeros)
-f (para criar funções somente leitura)
Use o comando readonly para fazer as variáveis e funções readonly ou seja, você não pode alterar o valor de variáveis .Ou, em vez de -r , usar: readonly variavel
→ O comando case:
O uso do ‘case’ tem de usar dessa forma: o case, o in, o ;;, o ) e o esac
→ Utilizando o bc
Introdução
O bc não é exatamente uma calculadora, mas sim uma linguagem para cálculos, que lembra vagamente a linguagem C. O que significa que podemos ter construções como ‘if’, ‘for’, ‘while’ , que um programa pode pedir informações para um usuário, e que podemos usar “programas” escritos para o ‘bc’ como se usássemos um shell script.
Conhecendo o bc (modo interativo)
Para chamar o bc, basta digitar numa janela de terminal, ‘bc’. Para fazer um cálculo, basta digitar a expressão e dar ENTER .
Operações definidas
Adição, subtração, multiplicação, divisão.
% | (resto da divisão)
^ | (potenciação)
sqrt(x) | (raiz quadrada de x)
last | (último resultado)
Para sair, basta dar ‘quit’.
Você pode estar pensando, depois desse último resultado (2/3 = 0?), “Epa! Alguma coisa está errada!”.
Calma, não se desespere. Você precisa carregar o bc com o parâmetro ‘-l’, que ativa uma biblioteca de operações matemáticas.
Pequena curiosidade: o comando ‘quit’ é executado assim que ele é encontrado. Portanto, algo como
if (0==1) quit
mesmo 0==1 sendo impossível, vai fazer o ‘ bc ‘ sair.
Tome cuidado com isso.
Conhecendo os comandos matemáticos do bc
Quando carregamos o bc com a opção ‘-l’, temos alguns comandos matemáticos:
s(x)
o seno de x (x em radianos)
c(x)
o cosseno de x (x em radianos)
a(x)
o inverso da tangente de x (retorna radianos).
Se y = tangente de x (tg x), a(y) = x
l(x)
o logaritmo natural de x. (ln x)
e(x)
a função exponencial ( e^x ) (exp x)
Construindo funções
Podemos definir algumas funções extras a partir da definição matemática
define sin(x) {return s(x)}
define cos(x) {return c(x)}
tg x = sen x / cos x
define tan(x) {return s(x)/c(x)}
log10 x (logaritmo na base 10 de x) = ln x / ln 10
define l10(x) {return l(x)/l(10)}
Conversão entre radianos e graus:
d2r: graus para radianos
r2d: radianos para graus
pi = 3.14159265
define d2r(n) { return n * (pi/180); }
define r2d(n) { return n / (pi/180); }
Mas é chato ficar digitando essas definições toda vez que queremos usar o ‘bc’.
Portanto, iremos criar um script que defina essas funções automaticamente.
Crie, usando seu editor de texto preferido (vi, emacs, Gedit…) um arquivo com o seguinte
Salve ele como ‘define.bc’ no seu diretório HOME.
Mude os atributos dele, tal que ele seja executável:
Agora, chame o arquivo:
Experimente usar os comandos:
Note que ocorre um pequeno desvio nas casas decimais.
Conceitos para a criação de pequenos programas com o bc
O comando “define”. Mas afinal, o que o comando faz?
Ele simplesmente define uma função.
Dentro dele podemos usar os elementos acima citados, além destes:
auto : define uma variável local.
print : mostra mensagens na tela. (equivalente ao printf em C)
return : retorna um valor. Deve ser usada no final do programa, para retornar o resultado final dele.
{ } (colchetes) têm o mesmo significado que na linguagem C. Eles servem para agrupar várias operações, de modo que estas sejam executadas de uma vez só.
Como podemos notar, a linguagem é bem semelhante ao C. Porém, não há nenhum elemento parecido com o ‘goto’ ou o ‘switch’, o que a torna bem limitada.
quit | Só deve ser usado em modo interativo.
Assim que ‘quit’ for encontrado, o bc sai. (ver curiosidade no item 2) Em programas devemos usar ‘halt’.
Alguns exemplos
Definição recursiva do fatorial:
Solução da equação do 2o grau
Como o bc força o retorno de apenas um valor por função, criamos 2 funções para retornar as 2 raízes da equação
bc e shell scripts
Às vezes, precisamos fazer um cálculo num shell script. O bc torna isso moleza
__x=$(echo “358358*5824825”
bc)__
echo $x
2087372637350
Simples, não?
A estrutura é
__variavel=$(echo “expressão”
bc)__
Conclusão e considerações finais
Nesse artigo, vimos como usar os comandos básicos do programa bc, que, embora aparentemente limitado, pode quebrar um bom galho como uma calculadora programável e em shell scripts.
Porém, ele não deve ser considerado como uma linguagem de programação completa, mas sim como uma linguagem específica para sua aplicação.
→ Usando o ‘sleep’ e o ‘clear’ para programas interativos
→ o comando ‘reset’
É o mesmo que o clear, porém limpa a tela totalmente(a barra de rolagem fica integral)
→ Mostrar hora
→ O comando tput
Envia a seqüência para mover o cursor para a linha 2, coluna 4 (no canto superior esquerdo da tela, geralmente conhecida como a “casa” posição do cursor).
→ O comando diff(utilizado para para mostrar diferenças em arquivos)
→ Usando o Comando beep
Instalando:
Opções de uso
-f
frequênciaDefine a frequencia, muda o tom do som, permitindo realizar combinações muito interessantes
-r
repetiçõesDefine o numero de repetições
-d
tempo - Determina o tempo (delay) de espera de repetição entre um som e outro, usado junto com a opção -r
-n
Usa uma linha de comando do beep para realizar vários sons diferentes
-s
Essa opção trata do processamento de entrada e saída de dados. A opção -s conta as linhas que foram redirecionadas para o beep por meio do pipe (
)
-c
Essa opção trata do processamento de entrada e saída de dados, contando os caracteres que forem redirecionados pelo pipe
→ Passando argumentos para funções
Nota adicional para funções, ao invés de criar vários aliases no .bashrc melhor criar funções em um diretório, exemplo:
a) edite seu .bashrc somente uma vez incluindo uma linha
b) Crie o arquivo minhasfuncoes.sh no seu /home com o seguinte código:
c) Crie uma pasta ‘funcoes’ na sua home para salvar sua funções lá:
d) Crie sua funções sem o .sh e jogue na pasta ‘/home/$USER/funcoes’
Exemplos:
♠ Função bobmarley()
♠ Função malcomx()
e) Depois torne tudo executável, dando as devidas permissões:
f) Agora basta abrir o novo terminal e chamar a função desejada para executar o desejado:
Ainda há como torná-las de leitura automática sem precisar chamar a minhasfuncoes, assim como as FunçõesZZ do Aurélio.
→ O comando exit:
A declaração de saída é usado para sair do script shell com um status de N.
Use a declaração de saída para indicar o término shell script bem ou mal sucedidas.
O valor de N pode ser utilizado por outros comandos ou scripts shell para levar a sua própria ação.
Se N for omitido, o estado de saída é o valor do último comando foi executado.
Use a declaração de saída para terminar script shell em um erro.
Se N é definido para 0 significa saída shell normal. Criar um script shell chamado exitcmd.sh:
Cada comando Linux executado pelo script shell ou usuário, tem um status de saída.
O status de saída é um número inteiro.
0 estado de saída significa que o comando foi bem sucedido sem erros.
A não-zero (1-255 valores) saída de comando, o estatuto foi falha.
Você pode usar variáveis shell especial chamado? para obter o status de saída do comando anteriormente executado.Para imprimir? variável usar o comando echo
Para visualizar existe data de status do comando, digite:
De acordo com a página man ls - estado de saída é 0 se OK, 1 se problemas menores, se dois sérios problemas.
→ O comando seq
Ele é praticamente o loop for, mostra uma sequência de tal número até outro número.No exemplo abaixo, contará do número 2 até o número 8
mesmo que:
ou até mesmo(os dois aninhados):
→ O comando let
Ele praticamente é um ‘incrementador’, se vc digitar isso num terminal, verá que ele incrementar +1 na variável j
→ Operações básicas com vetores/arrays
Se há um recurso muito útil na programação, certamente é a possibilidade de agruparmos várias variáveis de um mesmo tipo em uma só. São o que chamamos de vetor, ou matriz - em inglês se diz array.
→ O comando unset(serve para apagar: variáveis, vetores/arrays e funções)
Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!