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

时间:2017-09-18 17:27:37

标签: bash awk ksh

我有一个类似下面示例的脚本。我有一个字母偏移,我需要打印我用偏移量计算的字母。我不知道如何使用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 )) }')

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

您不需要在每次迭代中调用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