将数字偏移量应用于bash数组中的每个元素

时间:2013-07-30 19:50:58

标签: arrays bash

我想接受用户的输入并将每个值减1。例如,如果用户提供:

0 1 6 8

我想将其更改为:

  

-1 0 5 7

我的代码看起来像这样,但似乎不起作用:

echo 'Please enter numbers:'
read numbers
IFS=' '
numarray=($numbers)
for i in "${numarry[@]}"
do
     (( numarray[i]-- )) 
done
echo ${numarray[@]}

但代码似乎不起作用。有任何想法吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您的代码无法按预期运行,因为for i in ${numarray[@]}遍历数组元素,其中$i是实际元素,而(( numarray[i]-- ))期望$iecho 'Please enter numbers:' read numbers IFS=' ' numarray=($numbers) numarray=($numbers) for i in $(seq 1 ${#numarry[@]}); do (( numarray[i-1]-- )) done echo ${numarray[@]} 是数组元素的索引。试试这个:

{{1}}