아래는 오류를 발생시키는 코드 부분입니다.
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
또한 스크립트의 출처가 정확히 어디인지도 확실하지 않습니다 . 전반적으로 귀하의 질문은 몇 가지 코드를 제공하지만 귀하의 질문에 완전히 답할 수 있는 단서는 제공하지 않습니다.