1,写一个shell脚本。提示你输入一个暂停的数字,然后从1打印到该数字。然后询问是否继续。继续的话在输入个在数字 接着打印。不继续退出。
例:如果输入的是5,打印1 2 3 4 5 然后继续 输入15 然后打印 6 7 ...14 15 以此类推。http://www.apelearn.com/bbs/forum.php?mod=image&aid=6167&size=300x300&key=8f996f5f62cd317a&nocache=yes&type=fixnone
例:如果输入的是5,打印1 2 3 4 5 然后继续 输入15 然后打印 6 7 ...14 15 以此类推。http://www.apelearn.com/bbs/forum.php?mod=image&aid=6167&size=300x300&key=8f996f5f62cd317a&nocache=yes&type=fixnone
0
- #!/bin/bash
- ##written by wangyl
- ##2016-4-20
- read -p "请输入您想要暂停的数字:" number_1
- for i in `seq 1 $number_1`;
- do
- echo $i
- done
- read -p "是否继续输入数字?" a
- if [ $a == "yes" ];then
- read -p "请继续输入您想要暂停的数字:" number_2
- number_3=$[$number_1+1]
- if [ $number_2 -gt $number_1 ];then
- for h in `seq $number_3 $number_2`;
- do
- echo $h
- done
- else
- echo "输入数字错误,请输入大于的数字!"
- fi
- else
- exit
- fi
0
- [root@aliyun-63 Test]# cat a4.sh
- #!/bin/bash
- ###
- cycle(){
- if [ $? -eq 0 ]
- then
- start_stop
- fi
- exit
- }
- contiue(){
- echo -e "input a number: "
- read a3
- m=$[$a1+1]
- if [ $a3 -lt $a1 ]
- then
- for n in `seq 1 $a3`
- do
- echo $n
- done
- cycle
- else
- for n in `seq $m $a3`
- do
- echo $n
- done
- cycle
- fi
- }
- start_stop(){
- echo -e "are you sure contiue(y or n) "
- read a2
- if [ $a2 = y ]
- then
- contiue
- fi
- exit 1
- }
- echo -e "input a number:(1-99) "
- read a1
- expr ${a1} + 0 &>/dev/null
- if [ $? -eq 0 ]
- then
- for n in `seq 1 $a1`
- do
- echo $n
- done
- start_stop
- fi
- echo "input invalid"
- exit 0
- [root@aliyun-63 Test]#
0
本帖最后由 duyanbin 于 2016-4-20 17:44 编辑
#!/bin/bash
c=1
while true ; do
read -p "请输入一个数字 ==> " n
[[ $n =~ ^[0-9]+$ ]] || { echo "请确保输入的是数字且为正! 再输一次==>" ; continue ; }
[[ $n -ge $c ]] || { echo "请确保输入的数字大于等于$c! 再输一次==>" ; continue ; }
seq $c $n | xargs
c=$((n+1))
read -p "是否继续输入? y 继续 , 其他任意字符退出 ==>" ans
case $ans in
y) continue ;;
*) echo "退出脚本"
exit 1
esac
done
#!/bin/bash
c=1
while true ; do
read -p "请输入一个数字 ==> " n
[[ $n =~ ^[0-9]+$ ]] || { echo "请确保输入的是数字且为正! 再输一次==>" ; continue ; }
[[ $n -ge $c ]] || { echo "请确保输入的数字大于等于$c! 再输一次==>" ; continue ; }
seq $c $n | xargs
c=$((n+1))
read -p "是否继续输入? y 继续 , 其他任意字符退出 ==>" ans
case $ans in
y) continue ;;
*) echo "退出脚本"
exit 1
esac
done
0
本帖最后由 dessler 于 2016-5-23 14:35 编辑
我把所有注释都加进去了,主要是容错,部分语法参考了其他人了
比如输入为空,输入不是纯数字
但是只考虑了2次输入,如果按照程序要求的话,估计后面还有无数层,就不在我的考虑范围了
前前后后调试居然花了2个小时
我把所有注释都加进去了,主要是容错,部分语法参考了其他人了
比如输入为空,输入不是纯数字
但是只考虑了2次输入,如果按照程序要求的话,估计后面还有无数层,就不在我的考虑范围了
前前后后调试居然花了2个小时
- #!/bin/bash
- #by chenhong 2016.5.23
- #定义输入第一个输入的数变量为n
- read -t 10 -p "请输入你要打印的数字:" n
- #第一次判断变量n是否为空,如果不为空则继续
- if [ -n "$n" ]
- then
- #将变量n通过sed替换掉里面的数字并重新定义为变量m
- m=$(echo $n | sed 's/[0-9]//g')
- #进行第二次判断变量m是否为空,如果为空则继续
- if [ -z $m ]
- then
- #执行for 循环 1 到 变量n
- for i in `seq 1 $n`
- do
- echo $i
- done
- #定义输入第二个输入的数变量为n1
- read -t 10 -p "请继续输入数字打印:" n1
- #第三次判断变量n1是否为空,如果不为空则继续
- if [ -n "$n1" ]
- then
- #将变量n1通过sed替换掉里面的数字并重新定义为变量m1
- m1=$(echo $n1 | sed 's/[0-9]//g')
- #进行第四次判断,判断用户第二次输入的信息是否为纯数字,如果是则继续
- if [ -z $m1 ]
- then
- #定义变量n2,为变量n+1(打印的第一个数字如果一切正常的话)
- n2=$[$n+1]
- #进行第五次判断,如果第一次输入的数字,小于第二个输入的数字,则执行
- if [ $n -lt $n1 ]
- then
- #执行for循环,定义n+1到n1 之间的值得
- for i1 in `seq $n2 $n1`
- do
- echo $i1
- done
- #进行第五次判断,如果第一次输入的数字,不小于第二个输入的数字,则退出
- else
- echo "你第二次输入的数字小于或者等于第一个数字"
- fi
- #进行第四次判断,判断用户第二次输入的信息是否为纯数字,如果不是则提示错误信息
- else
- echo "你的第二次输入的不是纯数数字"
- fi
- #第三次判断变量n1是否为空,如果为空则输入错误信息
- else
- echo "你的第二次输入为空,请正确输入"
- fi
- #进行第二次判断变量m是否为空,如果不为空则说输入的不是数字,则输入错误信息
- else
- echo "你的第一次输入不是纯数字"
- fi
- #第一次判断变量n是否为空,如果为空则输入错误信息
- else
- echo "你的第一次输入为空,请输入你的值"
- fi
编辑回复