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