sum=0
read n
read -a array
for i in "${array[@]}"
do
sum=$(( $sum + $i ))
done
echo $sum
我是脚本新手。在这里,我想知道我可以使用什么来添加条件,以便读取数组将被限制为n次。
前:
3
1 2 3 4
这里它应该只添加1 2 3,它不应该是4。
答案 0 :(得分:2)
我更喜欢bash C for循环,它不需要条件来逃避循环并且看起来更整洁。
#! /bin/bash
sum=0
read n
read -a array
for ((x=0; x<n; x++))
do
sum=$(( sum + array[x] ))
done
echo "$sum"
答案 1 :(得分:1)
你可以完全避免循环,并使用参数替换来切割数组,如下所示:
$ cat script.bash
sum=0
read -p "Enter n: " n
read -p "Enter space separated array elements: " -a array
echo "${array[@]:0:$n}" | sed 's/\s/+/g' | bc
$ ./script.bash
Enter n: 3
Enter space separated array elements: 1 2 3 4
6
$
echo "${array[@]:0:$n}" | sed 's/\s/+/g' | bc
此语句动态切片数组并用\s
替换空格+
以形成加法表达式,然后将其传送到bc
(计算器)
答案 2 :(得分:1)
sum=0
i=0
read n
read -a array
while [[ $i -lt $n ]]
do
sum=$(( $sum + ${array[$i]}))
let i++
done
echo $sum
我尝试了这个并且它有效。顺便说一下,谢谢大家
答案 3 :(得分:0)
总和= 0 阅读 J = 0 读-a数组
DECLARE @TimeString VARCHAR(MAX) = '17:34'
DECLARE @Time Time = CAST(@TimeString AS TIME)
SELECT DATEPART(hour,@Time) + (DATEPART(minute,@Time)/15) * 0.25 + ROUND(CAST(DATEPART(minute,@Time) % 15 AS FLOAT)/15, 0) * 0.25
echo $ sum
答案 4 :(得分:0)
#!/bin/bash
param=$1
sum=0
for i in {0..$param}
do
let " sum = $sum + ${array[$i]} "
done
echo "RESULT: $sum"
并执行
./scipt.sh n