如何在Bash脚本数组中将值增加1?

7
我正在尝试使用以下代码将数组中的值增加1,但是我遇到了一些问题。请问有人可以帮助我吗?
myArray[$position]=((${myArray[$position]}++))

什么是Unix数组?你在这里编写脚本吗? - Carl Norum
没错 - 我正在编写一个Bash脚本 - user843337
2个回答

21

试试这个

 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
不是所有情况下都不需要在变量前加 $,有时你需要使用 $ 来强制上下文(例如 $1$2 ... $N)。 - Chris Down
太好了,这肯定会影响某人的结果。我回来后会更新。感谢您的改进! - shellter
请注意,在更新之前,如果myArr[3]0,则退出状态将为非零 - l0b0
1
你也可以使用 let myArr[3]++ - l0b0

0

自增并更新:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接