function10.sh用于显示一个不多于5位的正整数的位数,并按顺序显示
各个数位的值
cat function10.sh
#!/bin/bash
#该函数实现显示整数位数
count_of_int()
{
if [ $1 -gt 9999 ] #当该数的值大于9999时,表示该数为5位数
then
let "place=5"
elif [ $1 -gt 999 ] #当该数的值大于999时,表示该数为4位数
then
let "place=4"
elif [ $1 -gt 99 ] #当该数的值大于99时,表示该数为3位数
then
let "place=3"
elif [ $1 -gt 9 ] #当该数的值大于9时,表示该数为2位数
then
let "place=2"
else #当该数的值大于等于0而小于或等于9时,表示该数为1位数
let "place=1"
fi
echo "The place of $1 is $place." #输出该数的位数
}
#该函数实现显示该整数每个位数上的数字
num_of_int()
{
let "ten_thousand = $1/10000"
let "thousand = $1/1000%10"
let "hundred = $1/100%10"
let "ten = $1%100/10"
let "indiv = $1%10"
#当输入万位上的数不等于0时,表示该数为5位数,需输出万、千、百、十、个位
if [ $ten_thousand -ne 0 ]
then
echo "$ten_thousand $thousand $hundred $ten $indiv"
#当输入万位上的数等于0而千位上的数不为0时,表示该数为4位数,需输出千、百、十、个位
elif [ $thousand -ne 0 ]
then
echo "$thousand $hundred $ten $indiv"
#当输入万位上的数和千位上的数等于0而百位上的数不为0时,表示该数为3位数,需输出百、十、个位
elif [ $hundred -ne 0 ]
then
echo "$hundred $ten $indiv"
#当输入万、千、百位上的数为0时,表示该数为2位数,需输出十、个位
elif [ $ten -ne 0 ]
then
echo "$ten $indiv"
#其它状态时输出个位数
else
echo "$indiv"
fi
}
#调用函数count_of_int 和num_of_int
show()
{
echo "Please input the number(1-99999):"
read num
count_of_int $num #显示输入参数的位数
num_of_int $num #显示输入参数的各位数值
}
#脚本中调用函数
show
./function10.sh
Please input the number(1-99999):
8567
The place of 8567 is 4.
8 5 6 7