计算变量名时在 awk 中打印变量

Print variable inside awk while calculating variable name

我有一个类似于下面示例的脚本。我有一个字母偏移量,我需要打印我用偏移量计算出的字母。我不确定如何使用 ksh 阅读那封信。

我预期的答案是 LETTER_OFFSET(1)=a,LETTER_OFFSET(2)=v, LETTER_OFFSET(3)=c 等。我的偏移量它是在一个循环内计算的。

#!/bin/ksh
#         1    2  3  4  5  6  7 8  9 10  11 12
LETTERS=" a    v  c  d  g  r  g s  s a   g   f"
LETTER_OFFSET="3";
Letter=$(echo $LETTERS | awk '{print $((1 * $$LETTER_OFFSET )) }')

您将使用 awk -v 标志将您的偏移量传递到您的 awk 脚本中以用作 awk 变量:

LETTER=$(echo $LETTERS | awk -v offset=$LETTER_OFFSET '{print $offset}')

您不需要在每次迭代中都调用 awk。您可以使用字母填充数组,然后使用 index:

访问它的值
#!/bin/ksh
#         1    2  3  4  5  6  7 8  9 10  11 12
letters=" a    v  c  d  g  r  g s  s a   g   f"

# populate an array
arr=($letters)

offset=1
while [ "$offset" -le 12 ]; do
   echo "${arr[$offset-1]}"
   let offset++
done

输出:

a
v
c
d
g
r
g
s
s
a
g
f