我想打印读取的数字的阶乘,stdin
但是我不能这样(打印空行):
#!/bin/bash
factorial()
{
if [ $1 -le 1 ]
then
return 1
else
factorial $[$1-1]
return $[$1*$?]
fi
}
read num
ret="$(factorial $num)"
echo "${ret}"
这种方式有效,但是我觉得情况有些糟(因为我以后无法保存变量了):
factorial $num
echo $?
为什么第一种方法不起作用?(链接至对此有很高评价的答案,以解释该问题)
如果您echo
将阶乘函数中的结果而不是尝试将其返回,则第一种方法有效。
该$(...)
语法计算结果为运行该命令的输出。由于您的代码本身没有输出,因此ret
将为空。
#!/bin/bash
factorial()
{
if [ $1 -le 1 ]
then
echo 1
else
part=$(factorial $(($1-1)))
echo $(($1*$part))
fi
}
read num
ret="$(factorial $num)"
echo "${ret}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句