在bash脚本中使用自变量访问数组元素

时间:2017-04-21 07:39:12

标签: arrays bash

使用索引循环使用常规数组。对于我的应用程序,我需要使用一个自变量来从数组中提取值。

#!/bin/bash
# Author : Ankit
echo "Please enter the number of files (max index number of file): "
read iv
fname="t3p_"
echo "You entered: $iv, $fname" ;
#---------------------------------------------------------------------------------------------
#Reference values
refxa=(2.0 3.0 4.0)
refza=(1.0 6.0 7.0)
#---------------------------------------------------------------------------------------------
rm result.txt
#echo  $iv,$fname
i=1
while [ $i -lt $(($iv+1)) ] ;  do
xxn=5
zzn=19
refxn=$(echo $refxa | awk '{print $i}')
refzn=$(echo $refza | awk '{print $i}')

delta_x=`echo $xxn - $refxn  | bc -l`
delta_z=`echo $zzn - $refzn  | bc -l`

printf "%f\t%f\t%f\t%f\t%f\n" "$i" "$xxn" "$delta_x" "$zzn" "$delta_z" >>  result.txt

i=$[$i+1]
done
echo -e  "------------------------------------------------------------------------------------"
cat result.txt

我的问题:

  1. 如上所示,我想从第i个数组元素(xxn)中减去值$i,这是循环的索引。如何使用变量$i访问数组元素。 (使用数组索引不是一个选项,因为在我的脚本中,$ i与其他几个参数相关,并且此处未显示该代码。)
  2. 我尝试了${refxa[i]}这不起作用。

    预期输出(第3和第5列为xxn-refxn[i]zzn-refzn[i]

    You entered: 3, t3p_
    ------------------------------------------------------------------------------------
    1.000000        5.000000        3.000000        19.000000       18.000000
    2.000000        5.000000        2.000000        19.000000       13.000000
    3.000000        5.000000        1.000000        19.000000       12.000000
    

0 个答案:

没有答案