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。
我更喜欢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"
您可以完全避免循环,并使用参数替换来切片数组,如下所示:
$ 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
echo "${array[@]:0:$n}" | sed 's/\s/+/g' | bc
这个语句动态地切片数组,并用+
替换空格以形成加法表达式,然后将其传送给bc
(计算器)
sum=0 i=0 read n read -a array while [[ $i -lt $n ]] do sum=$(( $sum + ${array[$i]})) let i++ done echo $sum
我试过这个,它的工作。 顺便说一句,谢谢大家
sum = 0读取n j = 0读取-a数组
for i in "${array[@]}" do if [[ $j -ge $n ]];then break else sum=$(( $sum + $i )) (( j = j + 1 )) fi done
echo $ sum
#!/bin/bash param=$1 sum=0 for i in {0..$param} do let " sum = $sum + ${array[$i]} " done echo "RESULT: $sum"
并执行
./scipt.sh n