2014-11-20 162 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