简体   繁体   English

同时轻松增加和打印值

[英]Easy increment and print values at the same time

I need help incrementing array values inside loops. 我需要在循环中增加数组值的帮助。 The problem is variables are all the same and the second element of "Numbers" array is not incremented. 问题是变量都相同,并且“ Numbers”数组的第二个元素未增加。

#!/bin/bash

Duration=60

declare -a Numbers=("5" "10")

for (( d=1 ; d<=$Duration ; d++ ))
do

  for (( i=0 ; i<${#Numbers[@]} ; i++ ))
  do

        if [ "$MYVALA" == "" ]; then
                MYVALA=${Numbers[i]}
        else
                MYVALA=$(($MYVALA+1))
        fi ;

        echo ""
        echo "number: ${Numbers[i]}"
        echo "-------------"
        echo "new value = $MYVALA"
  done ;
  sleep 1 ;
done ;

this is the result of code above: 这是上面的代码的结果:

number: 5
-------------
new value = 5

number: 10
-------------
new value = 6

number: 5
-------------
new value = 7

number: 10
-------------
new value = 8

What I would like to get is: 我想得到的是:

number: 5
-------------
new value = 6

number: 10
-------------
new value = 11

number: 5
-------------
new value = 7

number: 10
-------------
new value = 12
...

number 5 and number 10 are printed at the same time and once per second. 5号和10号同时打印,每秒打印一次。

Thanks for your help. 谢谢你的帮助。

This produces the output you wanted. 这将产生您想要的输出。 The new value is simply the number plus duration. 新值就是数字加上持续时间。

#!/bin/bash

Duration=60
Numbers=(5 10)

for (( d=1 ; d<=Duration ; d++ )) ; do
  for (( i=0 ; i<${#Numbers[@]} ; i++ )) ; do
      let MYVALA=Numbers[i]+d
      echo
      echo "number: ${Numbers[i]}"
      echo '-------------'
      echo "new value = $MYVALA"
  done
  sleep 1
done

To increment an array value, use (( myarray[i]++ )) . 要增加数组值,请使用(( myarray[i]++ )) To make your script print out the values you describe, you can keep a separate array of counters for each number. 为了使您的脚本打印出您描述的值,您可以为每个数字保留一个单独的计数器阵列。

#!/bin/bash

Duration=60

declare -a Numbers=("5" "10")
Counters=( "${Numbers[@]}" )

for (( d=1 ; d<=$Duration ; d++ ))
do

  for (( i=0 ; i<${#Numbers[@]} ; i++ ))
  do
        (( Counters[i]++ ))
        echo ""
        echo "number: ${Numbers[i]}"
        echo "-------------"
        echo "new value = ${Counters[i]}"
  done ;
  sleep 1 ;
done

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM