0

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

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[@]}

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

4

1 回答 1

1

您的代码无法按预期工作,因为for i in ${numarray[@]}迭代数组的元素$i是实际元素,而(( numarray[i]-- ))期望$i是数组元素的索引。试试这个:

echo 'Please enter numbers:'
read numbers
IFS=' '
numarray=($numbers)
numarray=($numbers)
for i in $(seq 1 ${#numarry[@]}); do
  (( numarray[i-1]-- )) 
done
echo ${numarray[@]}
于 2013-07-30T20:32:21.733 回答