Bash For 루프가 작동하지 않습니다

Bash For 루프가 작동하지 않습니다

이 간단한 bash 스크립트를 실행하려고 하는데 구문 오류가 발생합니다. 나는 이 간단한 문서를 따랐습니다.https://www.cyberciti.biz/faq/bash-for-loop/하지만 행운은 없습니다. 내가 뭘 잘못하고 있는지 잘 모르겠나요?

#!/bin/bash
for i in 1 2 3 4 5
do
    echo "Count $i"
done;

실수:

setup.sh: 3: setup.sh: Syntax error: word unexpected (expecting "do")

여기에서는 WSL(Linux용 Windows 하위 시스템)에서 스크립트를 실행하고 있습니다.

답변1

스크립트 파일은 DOS 텍스트 파일입니다. 각 줄 끝에 있는 추가 캐리지 리턴은 혼란스럽습니다 ( 대신 bash표시됨 ).do\rdo

같은 도구를 사용하여 Unix 텍스트 파일로 변환하거나 dos2unix편집기에서 Unix 텍스트 파일로 저장하는지 확인하세요.

답변2

방금 centos 시스템에서 동일한 스크립트를 실행했고 파일이 작동했습니다. Kusalananda가 제안한 대로 스크립트 파일을 dos에서 unix로 변환하십시오. dos2unix 패키지가 아직 설치되지 않은 경우 설치합니다. 그런 다음 다음 명령을 사용하여 $dos2unix(파일 이름)을 변환할 수 있습니다.

답변3

#!/bin/bash
for i in 1 2 3 4 5
do
    echo "Count $i"
done;

루프를 수행하는 더 좋은 방법은 다음과 같습니다.

for i in {1..5}; do
    echo "Count $i";
done

이렇게 하면 해당 숫자를 모두 지정할 필요가 없습니다. 그렇다면 당신의 방법을 사용하여 100개의 숫자를 반복해야 한다면 어떻게 하시겠습니까?

관련 정보