[[01: 명령을 찾을 수 없음 오류가 if 문 줄에 나타납니다.

[[01: 명령을 찾을 수 없음 오류가 if 문 줄에 나타납니다.

다음 스크립트의 경우:

for f in $FILES
do

    fname="$(basename "${f}")"
    fn="${fname:6:2}"
    if [["$fn" == "01"]]; then #error here
        echo "yes"
    fi
done

답변1

상당히 간단한 구문 문제가 있습니다. 아래와 같이 테스트 구조 앞뒤에 공백을 추가하면 됩니다.

if [[ "$fn" == "01" ]]; then ...

작동해야합니다.

그 이유는 [[실제로는 다음과 같습니다.bash핵심 단어는 연산자가 아니므로 "독립적으로" 배치되어야 합니다(etc.와 유사 if).

파일 중 하나의 이름은 입니다 01. 구문을 사용하면 쉘은 키워드를 확인 if하고 그 뒤에 반환 코드가 계산될 명령이 올 것으로 예상합니다. 귀하의 코드에서는 [[01명령으로 간주되지만 명령이 존재하지 않는 것 같습니다. 이는 오류 메시지의 원인이기도 합니다.

쉘 스크립트에 대해 더 자세히 알고 싶고 bash(또는 ksh)(연산자를 테스트하기 위해 이중 괄호를 사용하여 표시됨)을 사용하고 있는 것으로 보이면 다음을 확인해 보세요.강타 가이드(@terdon의 제안을 기반으로 함) 그리고 나중에고급 Bash 스크립팅 가이드(때때로 포함되어 있는 그다지 좋지 않은 관행으로 인해 "단련"된 경우) 자세한 정보를 확인하세요.

관련 정보