C 셸 매개변수 If Else 루프

C 셸 매개변수 If Else 루프

스크립트 뒤에 하나 이상의 매개변수를 입력하면 해당 매개변수가 표시되는 스크립트를 작성 중입니다. 매개변수를 입력하지 않은 경우 "하나 이상의 매개변수를 입력하십시오"가 표시됩니다.

어떤 이유로 내 스크립트는 첫 번째 작업을 실행하지만 스크립트의 0 매개변수 작업은 실행하지 않습니다. 내가 뭘 잘못했나요? 이것은 단지 논리적 오류일까요?

foreach arg ( $* )
        if ( $#arg == 0 ) then
                echo "Please enter one or more arguments."
        else if ( $#arg > 0 ) then
                echo "Found argument = $arg"
        endif
end

답변1

스크립트에 매개변수가 없으면 $*가 아무 것과도 같지 않기 때문에 아무 작업도 수행되지 않습니다.

귀하의 스크립트는 실제로 다음과 같습니다.

foreach arg (  )
   echo "Nothing to see here"
end

무엇이 더 합리적일까요?

# check how many arguments passed to script
if ( $#argv == 0 ) then
     echo "Please enter one or more arguments."
     exit 1
endif

foreach arg ( $* )
    echo "Found argument = $arg"
end

관련 정보