
아래는 오류가 발생하는 코드 부분입니다.
for (( p=0; p<${var2}; p++ ))
do
if [[ ${array2[$p]} == *"xyz"* ]]
then
awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
else
awk -F" " '{ array3[p]="456" };1' ${array1[$i]}
fi
디버그 모드에서 스크립트를 실행하면 p 값이 고려되지 않는 것을 볼 수 있습니다.
+ awk '-F ' '{ array3[p]="456" };1' oct.csv
나는 스크립트를 실행 중이며 ./script.sh
사용 /bin/ksh
되는 쉘입니다. 도와주세요.
답변1
우선, 이것은 잘못된 것입니다:
awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
${array1[$i]}
은 파일이 아니므로 에 대한 첫 번째 명령줄 인수로 던질 수는 없습니다 awk
. 변수를 사용하면 다음과 같이 echo $VARIABLE
문자열을 사용해야 합니다 .<<<
awk -F" " '{ array3[p]="123" };1' <<< ${array1[$i]}
둘째, 범위 문제가 있습니다. 코드 array3[p]="123"
내에서만 존재하므로 awk
코드 외부에 아무것도 할당할 수 없습니다. 하지만 당신이 할 수 있는 일은 간단하다.
array3[$p]="123"
$i
스크립트에서 정확히 어디에서 왔는지도 불분명합니다 . 전반적으로 귀하의 질문은 약간의 코드를 제공하지만 귀하의 질문에 완전히 답할 수 있는 단서는 제공하지 않습니다.