编写一个弹出式菜单的shell程序,利用函数实现简单的菜单功能,n的值由键盘输入:

*****************************************
** (1)计算1到n的奇数之和; **
** (2)计算1到n的阶乘; **
** (3)计算1到n的所有质数; **
** (4)退出程序。 **
*****************************************

用select或者while都可以实现的,给你个框架,里面的小程序自己写:

#!/bin/bash
trap "" 2 3 15
MYDATE=`date "+%D %T"`
THIS_HOST=`hostname`
USER=`whoami`

#function:打开即时响应模式,读取用户点击的键值
read_char()
{
SAVESTTY=`stty -g`
stty raw
stty -echo
dd if=/dev/tty bs=1 count=1 2>/dev/null
stty -raw
stty echo
stty $SAVESTTY
}

#function:颜色模式
colour()
{
case $1 in
black_green)
echo '^[[40;32m'
;;
black_yellow)
echo '^[[40;33m'
;;
black_white)
echo '^[[40;37m'
;;
black_cyan)
echo '^[[40;36m'
;;
red_yellow)
echo '^[[41;33m'
;;
white_black)
echo '^[[47;30m'
;;
esac
}

#退出动作
my_exit()
{
colour black_white
exit 0
}
while :
do
tput clear
colour black_green
cat <<MAYDAY
--------------------------------------------------------------------------------
USER:$USER                  HOST:$THIS_HOST              DATE:$MYDATE
--------------------------------------------------------------------------------
                      1:计算1到n的奇数之和
                      2:计算1到n的阶乘
                      3:计算1到n的所有质数
                      Q:退出程序
--------------------------------------------------------------------------------
MAYDAY
colour black_cyan
echo "Your Choice[1,2,3,Q]>" 
read CHOICE
CHOICE=`read_char`
case $CHOICE in
1);;
2);;
3);;
Q|q)my_exit;;
*)echo "unknow choice!!";;
esac
echo  "Hit the ENTER key to return continue!"
read XXAA
done

有不懂得问我。

追问

直接写一个完整的吧

追答

小程序这么简单你自己可以写的?
还是你是新手刚学shell编程?

追问

新手啊

追答

1,1+3+5+...+(n-1) n能被2整除
1+3+5+...+(n-2)+n n不能被2整除

uy=`expr $n % 2`
sum=1
if [ "$uy" -eq "0" ]
then
n=`expr $n - 1`
fi
for((i=1;i<=$n;i++))
do
i=`expr $i + 2`
sum=`expr $sum + $i`
done

2,
for((i=0;i<$num;i++))
do
i=`expr $i + 1`
sum=`expr $sum \* $i`
done

3,质数只能被1和自己整除
for i in `seq 1 $n`; do factor $i | awk '{ if (NF == 2) print $2 }' ; done

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-16
广科的喔!哈哈哈

...编写一个显示菜单的shell程序,利用函数实现简单
while :doecho "===** (1)计算1到n的奇数之和; *** (2)计算1到n的阶乘; *** (3)计算1到n的所有质数; *** (4)退出程序。 **==="read -p "Please enter function select and number:" m n[ $m -eq 4 ]&&exitif echo $m|grep "^[...

...编写一个显示菜单的shell程序,利用函数实现简单的菜
环境是Suse的bash。

编写Shell程序,实现功能:计算N!,使用函数的方法实现.
if [ $# -ne 1 ]then echo "输入一个整数" exit 1fii=1sum=1while [ $i -le $1 ]do sum=$((sum * i)) i=$((i+1))doneecho $sum这样可实现你的要求 本回答由提问者推荐 举报| 答案纠错 | 评论 1 5 xgjmlf 采纳率:63% 来自团队:ScnuCpp 擅长: C\/C++ PHP Html\/Css 数据库DB py...

编写一个shell程序,实现运行时带一个参数,从小到大顺序输出该参数间的...
N=$1 seq $1 就两行写入脚本即可 最后$1是位置参数,就是你运行脚本后面的第一个参数 好了。希望可以帮到你

编写一个shell脚本文件,实现以下功能:
0 ];do n=$m sum=1 while [ n -gt 0 ];do sum=$((sum*n))echo "sum="$sum echo "n="$n n=$((n-1))done total=$((total+sum))m=$((m-1))echo "total=$total"done 我的电脑不知道为什么 写不了for循环 ,所以就用while 代替了 你也可以写for 循环 ,比较直观点 ...

在Linux系统下,编写一个Shell脚本,从键盘读入5个整数,然后显示最大数...
!\/bin\/bash 任意输入5个数,判断最大值,最小值,总和 s=0 read-p"pleaseinput:"num s=$(($s+$num))max=$num min=$num avg=$(($s\/5))foriin`seq4`do read-p"pleaseinput:"nums=$(($s+$num))if[$num-le$min];thenmin=$numfi if[$num-ge$max];thenmax=$numfi done ech...

如何编写一个shell脚本
在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写: 变量名=值 取出变量值可以加一个美元符号($)在变量前面: #!\/bin\/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 在您的编辑...

编写一个linuxshell脚本,运行它提示输入你的姓名,当你输入完毕之后程序...
!\/bin\/bash read -p "请输入你的名字:" name echo $name

编写一个shell程序convert.sh 如果输入convert.sh *.c
convert.sh 内容如下:!\/bin\/bash guide="Usage: `basename $0` *.c"if [ $# -eq 0 ]; then # no input parameter echo "$guide"exit 1 fi file="$1"ext=${file##*.} # parse file extension name=${file%.*} # parse basic file name file doesn't exist or is not a ...

在Linux下,用shell编写一个简单的计算器,要实现加减乘除4个功能就行了...
from shell history using arrays --- or allow zsh to switch internally to and from array-based history.emulate -L zsh setopt extendedglob local line ans base defbase forms match mbegin mend psvar optlist opt arg local compcontext="-math-"integer num outdigits outform=1 ...

相似回答