计算变量名时在 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
我有一个类似于下面示例的脚本。我有一个字母偏移量,我需要打印我用偏移量计算出的字母。我不确定如何使用 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