이 bash 스크립트에서 올바른 결과와 오류가 나타나는 이유는 무엇입니까?

이 bash 스크립트에서 올바른 결과와 오류가 나타나는 이유는 무엇입니까?

저는 bash 스크립팅과 "if then" 문을 처음 접했습니다. 아래의 간단한 스크립트를 실행하면 실행되어 올바른 결과를 제공하지만 여전히 오류가 발생합니다. 스크립트 이름은 testscript.sh입니다. 오류는 다음과 같습니다: "./testscript: line 5: [csh: 명령을 찾을 수 없음]"

이것이 무엇을 의미하는지 아는 사람이 있나요?

#! /bin/bash

MY_SHELL="csh"

If ["$MY_SHELL" = "bash"
then
    echo "You seem to like the bash shell."

else

    Then "You don't seem to like the bash shell."

fi

답변1

한 줄씩 살펴보겠습니다.

#! /bin/bash

MY_SHELL="csh"

여태까지는 그런대로 잘됐다.

If ["$MY_SHELL" = "bash"

이제 이 줄에는 오류가 많이 있습니다.

  1. if대신 If- 쉘은 대소문자를 구분하므로 fooFOO는 다릅니다.
  2. [문자 뒤에 공백이 있어야 합니다.
  3. ]테스트가 끝나면 공백을 추가 해야 합니다 .

이는 라인이 더 비슷해야 함을 의미합니다.if [ "$MY_SHELL" = "bash" ]

then
    echo "You seem to like the bash shell."
else

이것들은 좋다

    Then "You don't seem to like the bash shell."

여기 하나 원해요 echo. 대소문자를 구분해야 한다는 점을 기억하세요.

fi

결과:

#! /bin/bash

MY_SHELL="csh"

if [ "$MY_SHELL" = "bash" ]
then
    echo "You seem to like the bash shell."
else
    echo "You don't seem to like the bash shell."
fi

편집: 쉘 스크립팅에 익숙해지면https://www.shellcheck.net/콘텐츠 검증에 유용한 웹사이트입니다. 오류 출력이 항상 명확하지는 않지만 일반적으로 오류를 지적하는 데 도움이 됩니다.

답변2

대괄호는 실제로 명령이므로 [앞뒤에 공백이 필요합니다! ]그래서:

if [ "$shell" = "bash" ];

요청하신 오류이기 때문에 제가 지적하지 못한 다른 오류도 있습니다.

관련 정보