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