csh에서 Case Switch 문을 실행하는 방법

csh에서 Case Switch 문을 실행하는 방법

Sh에서는 다음과 같은 작업을 수행할 수 있다는 것을 알고 있습니다.

#!/sbin/sh

case "$1" in
'foo')
/path/to/foo.sh
;;
'bar')
/path/to/bar.sh
;;
*)
echo $"Usage: $0 {foo|bar}"
exit 1
;;
esac

인터넷 전체를 검색했는데 위에서 하려는 작업과 일치하는 해당 스위치 문을 찾을 수 없는 것 같습니다.

더 나아가기 전에, 저는 csh를 사용해서는 안 되지만 csh에서만 실행되는 오래된 애플리케이션을 가지고 있다는 것을 알고 있습니다. 이에 대한 Solaris SMF 서비스를 구축하려고 하며 쉘 설정을 시도했지만 메서드 파일에 사용된 모든 쉘이 실제 SMF 쉘을 재정의합니다. 따라서 csh에 있어야 합니다.

도움을 주셔서 미리 감사드립니다.

너무 길어요.(위의 내용을 csh로 어떻게 변환하나요?)

답변1

C-Shell의 단점을 이해해주셔서 기쁩니다.

다음은 C-쉘로 변환된 동일한 스크립트입니다(편집하다$usage: 인수가 없거나 인수가 1개보다 많은 경우 출력으로 업데이트됩니다):

#!/usr/bin/env csh

set usage="Usage: $0 {foo|bar}"

if ( $#argv != 1 ) then
  echo $usage
else
  switch ($argv[1])
  case 'foo':
    /path/to/foo.sh
    breaksw
  case 'bar':
    /path/to/bar.sh
    breaksw
  default:
    echo $usage
    breaksw
  endsw
endif

관련 정보