【发布时间】:2012-10-20 06:25:02
【问题描述】:
我尝试通过 shell 脚本编写斐波那契数列,例如,如果用户在命令行中的脚本名称后输入 5,则脚本需要从头开始打印出 5 个斐波那契数:
0 1 1 2 3
我已经完成了脚本,但是我需要检查用户输入是否是正数,这表明我在这部分有问题。 在命令行中,用户应该调用脚本,然后输入一个正数
./script number
这是我的代码:
#!/bin/sh
[ $# -ne 1 ] && { echo "enter a number please" ; exit 1 ; }
[ ! echo $1 | egrep -q '^[0-9]+$' && $1 -lt 0 ] && { echo "negative" ; exit 1 ; }
f0=0
f1=1
counter=2
if [ $1 -eq 0 ] ; then
echo -n "0"
elif [ $1 -ge 1 ] ; then
echo -n "0 1"
fi
while [ $counter -le $1 ] && [ $1 -gt 1 ] ; do
echo -n "$fn "
fn=`expr $f0 + $f1`
f0=$f1
f1=$fn
counter=`expr $counter + 1`
done
echo ""
【问题讨论】:
-
@sampson-chen 没有用。我在问问题之前检查了它。它没有工作
标签: shell