2014-11-20 161 views
0

我正在處理一個值的數組,我想通過一個常數值800進行偏移。是否有一種簡單的方法可以在bash中執行此操作?從數組bash中的每個元素減去常量值

+0

爲什麼你使用shell腳本此?爲什麼不是python/ruby​​/js? – 2014-11-20 16:43:39

+0

純粹是由於其他限制。它被合併到腳本中,引導一系列只能在bash中啓動的其他進程。 – 2014-11-20 16:45:46

+1

'爲我在「$ {!a [@]}」; do((b [i] = $ {a [i]} - 800));完成「或返回到'a'以重新使用相同的陣列。 – 2014-11-20 16:46:14

回答

0
$ xx=(11 22 33) 


$ for ((i = 0 ; i < ${#xx[@]} ; i++)) do ((xx[$i]=${xx[$i]} + 800)) ; done 


$ echo ${xx[@]} 
811 822 833 
+0

我認爲這將以相同的方式進行分工? – 2014-11-20 17:02:08

+0

@RobEven無論bash支持什麼操作,=右邊的位只是一個任意表達式,但我必須檢查bash現在支持的東西,我幾乎從不需要bash算術:-) – 2014-11-20 17:03:59

+0

同樣,這就是我在這裏發佈的原因。我主要使用更直觀的java和C++。 – 2014-11-20 17:35:50

0

只是遍歷:

len=${#ar[*]} 
for ((i=0; i<=$(($len -1)); i++)) 
do 
    ar[$i]=$((${ar[$i]} - 800)) 
done