【问题标题】:How can I increment a value in a bash script array by 1?如何将 bash 脚本数组中的值增加 1?
【发布时间】:2012-01-01 23:51:21
【问题描述】:

我正在尝试使用以下代码将数组中的值增加 1,但是我遇到了一些问题。请问有人可以帮我吗?

myArray[$position]=((${myArray[$position]}++))

【问题讨论】:

  • 什么是unix数组?你是在这里写脚本还是什么?
  • 正确 - 我正在编写一个 bash 脚本

标签: arrays bash increment


【解决方案1】:

试试这个

 myArr[3]=7
 (( myArr[3]++ ))
 echo ${myArr[3]}

 # output
 8

(( .... )) 可以执行 bash/ksh 的数学运算,并且内部引用的变量不需要像您的示例中那样传递出去,您可能正在考虑类似的构造 var=$(( ... MathStuff ...)) OR var=$( ... stringStuff ... )(注意 ' $' 在开头的括号之前)。

还要注意,在(( ... )) 中,您不需要对任何数学变量(如$pct 或$counter)使用前导“$”。如果您使用脚本的参数或 $1、$2、... $N 之类的函数,那么您需要使用 $,因此使用 $1 的值,而不仅仅是“1”。感谢@ChrisDown 的提醒!

我希望这会有所帮助。

【讨论】:

  • 不正确,有时您必须使用前导 $ 来引用它们以强制上下文($1$2 ... $N)。
  • 太好了,这肯定会影响某人的结果。我回来后会更新。感谢您的改进!
  • 请注意,the exit status will be non-zero 如果myArr[3] 在更新前是0
  • 你也可以使用let myArr[3]++
【解决方案2】:

增量和更新:

array[1]=$((array[1]++))

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多