De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Script para cálculo de fatorial

Colaboração: Júlio Cezar Neves

Data de Publicação: 20 de outubro de 2017

#!/bin/bash
# Programa para calculo de fatorial.
# chame o programa pasando o numero
# cujo fatorial sera calculado.
[ $# -ne 1 ] && exit 1
echo $(($(seq -s \* $1)))

A primeira linha encerra o programa caso não tenha sido passado o número para calcular o fatorial, a segunda é o pulo do gato. Vamos analisá-la em partes:

 seq -s \* $1 

esse comando produz uma seqüência numérica de 1 até o parâmetro passado ($1), usando como caractere separador entre os números um asterisco. Supondo que o número passado como parâmetro foi 5, após a execução deste comando teríamos: 1*2*3*4*5

Como temos um comando (seq) dentro de outro (echo) usamos $(seq -s \* $1), onde a construção $(...) foi usada para dar prioridade de execução ao comando no seu interior.

Parece mas não ésse :)! A construção $((...)) parece com a anterior, mas é totalmente diferente. Ela chama o interpretador aritmético do shell, que identifica o seu interior como uma operação aritmética inteira e executa esta operação.

OBS: também funcionaria se a segunda linha fosse assim:

 seq -s \* $1 | bc 

É por isso que eu sempre digo: "Nunca pergunte se dá para fazer em Shell. A pergunta correta é: qual é a melhor maneira de se fazer em shell"

Abração, Julio

:wq

Júlio Cézar Neves

O 4º UNIX do mundo nasceu na Cidade Maravilhosa, mais precisamente na Cobra Computadores, onde à época trabalhava o Julio. Foi paixão à 1ª vista! Desde então, (1980) atua nessa área como especialista em Sistemas Operacionais e linguagens de programação. E foi por essa afinidade que quando surgiu o Linux foi um dos primeiros a estudá-lo com profundidade e adotá-lo como Sistema Operacional e filosofia de vida. É autor dos livros Programação Shell Linux, 11ª edição e Bombando o Shell. Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)