我在这里试图解决作为参数传递的数字的阶乘,并且由于我是进行偏执检查的人之一,我认为检查输入的参数是否是字母会很有趣,它会给出错误因为这个数字不能计算一个字母的阶乘。
好吧,我正在浏览论坛并找到了一种方法,问题是我不知道我的代码有什么问题,因为检查从行中移动它甚至不计算数字的阶乘,我收到错误消息,如果它是一封信,它应该出来,并且修改检查的参数,它总是在其中一个部分给我一个错误。
这是我的代码:
#!/bin/bash
# Factorial de un número pasado por parámetro:
clear
#Primero declaramos las variables inicializadas con un valor.
#Al igual que en C, en este caso inicalizamos en 1, ya que inicializarlas en 0, la multiplicación del factorial, sería siempre 0.
factorial=1
contador=1
if test "$1" = ""; then
echo "El script necesita de un número entero para ejecutarse. Intentelo de nuevo. "
sleep 2
echo "Saliendo del script... "
sleep 2
exit 1
else
validar_numero='^-?[0-9]+([.][0-9]+)?$'
if ! [[ "$1"=~"$validar_numero" ]]; then
echo "Lo que se ha introducido no es número entero positivo. "
exit 2
else
while [[ $1 -ge $contador ]]; do
factorial=`expr $factorial \* $contador`
contador=`expr $contador + 1`
done
fi
echo "El factorial de $1 es $factorial. "
fi
我运行脚本的方式是:
chmod 777 factorial.sh
./factorial.sh
基本上你所做的是比较两个字符串,你需要传递参数而不将其转换为字符串,并修复你的表达式。
这里是完整的脚本:
利用计算器
bc
,我们可以创建一个脚本来计算大容量的阶乘:可以计算小的和大的阶乘: