어떤 데이터를 처리하고 싶은데, 텍스트 파일에 적힌 좌표를 읽어서 처리할 영역을 좁혀야 하는데..
다음과 같은 오류가 있습니다.
./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
뭔가를 읽을 수 있다면.