while 루프의 'in'에 예상치 못한 마커 근처에 구문 오류가 있습니다.

while 루프의 'in'에 예상치 못한 마커 근처에 구문 오류가 있습니다.

어떤 데이터를 처리하고 싶은데, 텍스트 파일에 적힌 좌표를 읽어서 처리할 영역을 좁혀야 하는데..

다음과 같은 오류가 있습니다.

./script5.sh: line 59: syntax error near unexpected token'./script5.sh: 59행:while IFS="" read -r $L1Aname north south east west || [[ -n "$L1Aname north south east west" ]] in $coord; do'

이것이 내가 가진 것입니다:

while IFS="" read -r $L1Aname north south east west || [[ -n "$L1Aname north south east west" ]] in $coord; do
    Nlat="$north"  #name variable north
    Slat="$south"  #name variable south
    Elon="$east"  #name variable east
    Wlon="$west" #name variable west
done < "$coord"; 

감사해요!

답변1

Barmar가 질문에 대한 설명에서 지적했듯이 while 루프는 원래 반복 for 루프인 것처럼 보입니다 $coord(하나의 변수가 파일의 전체 내용을 보유할 수 있음).

올바른 while 루프는 다음과 같습니다.

while read -r L1Aname north south east west; do
    Nlat="$north"
    Slat="$south"
    Elon="$east"
    Wlon="$west"
done <"$coord"

$나도 포기했어요 $L1Aname. 이것이 맞는지 완전히 확신할 수는 없지만, 여러분처럼할 수 있다 read $L1Aname(이렇게 하면 변수에 값이 읽혀집니다.누구의 이름변수 L1Aname)에 저장됩니다. 나는 이것이 의도하지 않은 것이라고 가정할 것입니다( L1Aname내가 틀렸다면 아래로 변경하십시오 ).$L1Aname

null이 아닌 값을 확인해야 하는 경우 문자열을 테스트하지 마세요. 문자열 "$L1Aname north south east west"은 null이 아닌 것으로 보장됩니다. 대신 개별 변수의 값을 테스트하십시오.

while read -r L1Aname north south east west
    && [ -n "$north" ] && [ -n "$south" ]
    && [ -n "$east"  ] && [ -n "$west"  ]
do
    Nlat="$north"
    Slat="$south"
    Elon="$east"
    Wlon="$west"

    # use "$Nlat", "$Slat", "$Elon" and "$Wlon" here.

done <"$coord"

$L1Aname포함이 보장되므로 테스트할 필요가 없습니다.무엇그들이 read뭔가를 읽을 수 있다면.

관련 정보