QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1261|回复: 9

求教用shell编写简单数列求和问题

[复制链接]
发表于 2004-5-26 22:39:50 | 显示全部楼层 |阅读模式
我想用shell写一个程序sum,可以在命令行接收一列数字比如:
$sum 20 50 100
然后显示出计算结果
20 1 50 1 100 5 170
需要用while或者for until,但是现在我不是很清楚应该以什么为循环条件,能否给一个例子?
谢谢!!
发表于 2004-5-26 22:42:24 | 显示全部楼层

Re: 求教用shell编写简单数列求和问题

[quote:d36c34f9f3="CDF"]然后显示出计算结果
20 1 50 1 100 5 170
[/quote]
这里头的“1”是什么意思?
回复

使用道具 举报

 楼主| 发表于 2004-5-26 22:44:36 | 显示全部楼层
就是不太清楚~~或者先不管它,我现在的疑问是这样的:
就是因为数字的多少并不知道,如果从命令行得到参数就应该在脚本中使用read来获取输入(我现在只知道这个),可是怎才能接受不确定的数字个数呢?不知道能不能用数组,要是不能得话,以什么变量来作为循环条件?从而判断累加结束?
回复

使用道具 举报

发表于 2004-5-27 00:59:08 | 显示全部楼层
从命令行接收的数字个数是知道的,它用“$#”来表示。
回复

使用道具 举报

发表于 2004-5-27 12:47:09 | 显示全部楼层
用位置参数试试吧:
$1,$2,$3
回复

使用道具 举报

发表于 2004-5-27 22:19:07 | 显示全部楼层
不知道你所列的“1”和“5”是什么意思,不过我将它改成了20+50+100=170的样式,代码如下:
[code:1]
#!/usr/bin/perl
if(!@ARGV){
    print "usage:\n";
    print "sum number1 number2 ...\n";
}
while(@ARGV){
    print "$ARGV[0]";
    if(@ARGV>1){print "+";}
    else {print "=";}
    $total+=$ARGV[0];
    shift;
}
print "$total\n";
[/code:1]
回复

使用道具 举报

发表于 2004-5-27 23:20:35 | 显示全部楼层
已经删除。
回复

使用道具 举报

发表于 2004-5-27 23:28:10 | 显示全部楼层
如果用bash,则代码如下:
[code:1]
#!/bin/sh
if [ $# -eq 0 ]; then
    echo "usage:"
    echo "sum number1 number2 ..."
fi
while [ $# -ne 0 ]; do
    echo -n $1
    (( total += $1 ))
    if [ $# -gt 1 ]; then
        echo -n "+"
    else
        echo -n "="
    fi
    shift
done
echo "$total"
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2004-5-28 21:25:22 | 显示全部楼层
非常感谢斑竹的帮助!!谢谢!因为我刚开始学习还很菜,有很多地方不清楚,谢谢!
回复

使用道具 举报

发表于 2004-5-28 21:44:47 | 显示全部楼层
加油哦!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 05:38 , Processed in 0.044934 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表