kaggr
배열을 생성 한 다음 값을 knam
sum 에 저장하는 다음 awk 코드가 있습니다 knum
. 루프는 처음부터 시작하는 것이 아니라 1
처음부터 시작해야 한다는 인상을 받았지만 작동하는 것 같습니다 0
. for ( i=1; i<n; i+=2 )
awk 배열은 index 에서 시작해야 하므로 0
index 에서 시작할 때 모든 것이 괜찮습니까 1
?
awk 'BEGIN { kl=0
"tput sgr0" |& getline rst
ks = "Wht 15 Grn 34 Blu 39 Ylw 11 Red 196 Amb 214"
n = split(ks, kaggr)
for ( i=1; i<n; i+=2 ) {
knam = kaggr[i] ":"
knum = kaggr[i+1]
}
}
답변1
split()
in을 사용하여 문자열을 분할하면 awk
처음부터 인덱스된 배열을 얻게 됩니다 1
.
~에서BSD 시스템에 대한 문서:
split(s, a, fs)
문자열을s
배열 요소a[1]
,a[2]
, ...a[n]
및 return 으로 분할합니다n
.
따라서 쌍으로 배열 요소에 액세스하려면 2단계로 from to를 반복 1
하고 각 반복에서 요소 합계에 액세스해야 합니다.n - 1
i
i+1
n = split(string, a)
for (i = 1; i <= n - 1; i += 2) {
# use a[i] and a[i+1]
}
분명히 i <= n - 1
와 동일하므로 i < n
루프가 정확합니다.