파일 읽기 시 "유효한 식별자가 아닙니다."

파일 읽기 시 "유효한 식별자가 아닙니다."

Putty 원격 연결에서 파일을 한 줄씩 읽고 각 줄을 구분 기호(";")로 자르고 변수가 조건을 만족하면 명령을 실행하려고 합니다. 그러나 파일을 읽을 때 "유효한 식별자가 아닙니다"라는 메시지가 나타납니다.

test.sh 파일의 간단한 논리는 다음과 같습니다.

while read download.archive
do
    likes = $(echo cut -d ";" -f 1 $line)
    echo $likes
    dislikes = $(echo cut -d ";" -f 2 $line)
    dislikes = $((dislikes * 95))
    url = $(echo cut -d ";" -f 3 $line)

if [$likes -gt $dislikes]
then
    youtube-dl --config-location youtube-dl-3.conf url
fi

done < download.archive

download.archive 파일은 다음과 같습니다.

9873;354;https://www.youtube.com/watch?v=0fd56CGnVRU
3267;54;https://www.youtube.com/watch?v=Mq4jAwPdCMw
25411;871;https://www.youtube.com/watch?v=PcSBOUpgngM
2829;44;https://www.youtube.com/watch?v=S-rj8m7Ssow
921;303;https://www.youtube.com/watch?v=JchVQMuxRVA
2014;32;https://www.youtube.com/watch?v=H8Y_ZfNViPU

그러나 ./test.sh를 실행하려고 하면 "./test.sh: line 4: read: 'download.archive': not a valid identifier". 파일이 유효한데 오류가 발생하는 이유는 무엇입니까?

답변1

수많은 오류가 발생한 후 작업 코드는 다음과 같습니다.

while IFS= read -r line; do

    likes=$(cut -d ";" -f 1 <<< "$line")
    dislikes=$(cut -d ";" -f 2 <<< "$line")
    likes=$((likes / 50))
    url=$(cut -d ";" -f 3 <<< "$line")

if [ $likes -gt $dislikes ]
then
    youtube-dl --config-location youtube-dl-3.conf $url
fi

done < download.archive

"읽기" 명령의 첫 번째 줄은 항상 위와 같습니다(읽기), 읽을 파일은 끝의 "done" 문 뒤에 있습니다(done <다운로드.보관).이번 포스팅은 여기IFS-r추가 사항과 해당 기능에 대해 설명합니다 .

변수를 할당할 때 할당 사이에 공백을 넣을 수 없는 것 같습니다. 따라서 이것은 작동하지 않습니다.

likes = $(cut -d ";" -f 1 $line)

그러나 이는 다음과 같습니다.

likes=$(cut -d ";" -f 1 $line)

...단, 프로그램이 현재 읽고 있는 줄을 참조하려면 를 사용해야 합니다 <<<. 이와 같이:

likes=$(cut -d ";" -f 1 <<< $line)

마지막으로 (문에서) 조건을 확인할 때 if시작과 끝 괄호 사이와 조건 내부 사이에 공백이 있어야 합니다. 다음과 같습니다.

if [ $likes -gt $dislikes ]

urlyoutube-dl에 대한 URL을 보유하는 변수를 참조 하려면 $. 이와 같이:

$url

관련 정보