você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Script para cálculo de fatorial

Por Júlio Cezar Neves

Data de Publicação: 17 de Outubro de 2006

  #!/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

Recomende este artigo nas redes sociais

 

 

Veja a relação completa dos artigos desta coluna