总n号码输入的键盘在庆典的脚本

0

的问题

第一,对不起"我的英语"。

我要作一个脚本,这是问我的号码通过键盘和增加他们,并表示的累积数额。 并计划将结束,当你进入一个负数。

我已经做了以下脚本的工作原理,但我不相信的使用seq在于使用,作为一种蓄,它没有发生,我要做任何其他方式。

方法来使它更加优雅...??

编辑:优雅的不是这个词,但如果我做的是正确的,在庆典或有一种方法来这样做"规范性"或"小奇怪"...

谢谢!

#!/bin/bash
#accumulated sum of numbers


i=0
sum=0
while [[ true ]]; do

echo "Insert a number: "
read num

if (($num < 0)); then
echo "Negative number, exit..."
break
fi

for i in $(seq $num $num); do
sum=$(($i + $sum))
done
echo "The sum of the previous numbers is $sum"

done 
bash linux script sum
2021-11-23 23:48:45
2
0

首先你可以用下面的bash功能:

sum() {
    local sum=0
    for arg in "$@"; do
        (( sum += arg ))
    done   
    echo $sum
}

第二种方式是要做一个非循环的变体:

{ printf %d+ "$@"; echo 0; } | bc

把上面在一个脚本文件的总和。

#!/bin/bash

{ printf %d+ "$@"; echo 0; } | bc

运行了它,像这样:

$ ./sum 4
4
$ ./sum 4 4 5
13

第三种方式我可以建议:

没有必要为巴什、普通sh将做到:

#! /bin/sh - 
IFS=+; echo "$(($*))"

$*在POSIX炮弹,扩展到列表中的位置参数(在这种情况下,争论的脚本)分通过的第一个字符$IFS(或空间如果$IFS是取消或什么如果$IFS是空的)。 $((...))是外壳内部运算扩大运营商(注意,它支持小数、八和十六号)

如果你需要浮点的支持,这就是你需要一个不同的外壳等ksh93或aix系统管理的各个方面和扩展(不bash作为bash仅支持整数的算术),虽然你也可以使用awk:

#! /usr/bin/awk -f
BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}

将使用长(用于整数)和双倍(对于浮点)型号码作为实施系统。 输入的数字必须小浮点或工程的表示法在英格(浮点分隔期间的性格无论locale). 一些awk实现,它将会失败,如果第一数量是否定的,因为awk会尝试将它解释为一种选择。

一些awk实现像GNU awk当POSIXLY_CORRECT是在环境也支持十六包括二元指数符号。 或者与--非十进制的数据,它了解八进制并十六:

$ POSIXLY_CORRECT=1 ./sum  0xap3 0xa
90 # (0xa * 2^3) + 0xa
$ awk --non-decimal-data -f ./sum  010
8
2021-11-24 09:05:41
0

seq$num$num显示的顺序号码从$num到$num是不优雅的,也不是纠正在这里。

我会写这样的:

#!/bin/bash
#accumulated sum of numbers

i=0
sum=0
while [[ true ]]; do

echo "Insert a number: "
read num

if (($num < 0)); then
echo "Negative number, exit..."
echo "The sum of the previous numbers is $sum"
break
else ((sum+=$num))
fi
done

因为每个书呆子,我有我的砸自己的脚本教程,请参阅 http://linuxintro.org/wiki/BaBE

2021-11-28 12:52:40

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................