C 셸의 스크립트가 마지막 else 문을 건너뜁니다.

C 셸의 스크립트가 마지막 else 문을 건너뜁니다.

이것은 인수 수와 파일/디렉토리 존재 여부를 확인하는 C 쉘 스크립트입니다. 매개변수가 유효하면 마지막 else 문으로 이동하여 "hi"를 인쇄해야 하지만 올바른 매개변수를 사용하여 이 스크립트를 실행하면 아무 것도 인쇄되지 않습니다. (그러나 종료 상태는 0입니다.)
잘못된 매개 변수가 있으면 다른 모든 것이 잘 작동합니다.

if ($#argv != 2) then
        echo "Two arguments required"
else
        if (! -f $argv[1]) then
                echo "File does not exist"
                exit 1
        else
                if (! -d $argv[2]) then
                        echo "Not a valid directory"
                        exit 2
                endif
        endif
else    
        echo "hi"
endif

어쩌면 내 구문이 잘못되었을 수도 있나요? 어떤 아이디어가 있나요?

답변1

elseelse이미 이 케이스가 있으므로 이 케이스에 문의할 수 없습니다 if. 달성하려는 작업은 다음을 통해 수행할 수 있습니다.

if ($#argv != 2) then
    echo "Two arguments required"
    exit 1
else if (! -f $argv[1]) then
    echo "File does not exist"
    exit 1
else if (! -d $argv[2]) then
    echo "Not a valid directory"
    exit 2
endif

echo "hi"

관련 정보