2013-07-30 24 views
0

我想採用用戶的輸入並將每個值減1。例如,如果用戶提供:對bash數組中的每個元素應用數字偏移量

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

因爲你希望你的代碼不能正常工作,因爲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[@]} 
相關問題