편집 : 제발, 제발 , 제발 회신하기 전에이 게시물의 하단에 나와있는 두 가지 요구 사항을 참조하십시오. 사람들은 요구 사항을 분명히 충족하지 못하는 새로운 보석과 라이브러리 등을 계속 게시합니다.
때로는 명령 줄 옵션을 간단한 스크립트로 매우 저렴하게 해킹하고 싶습니다. getopts, 구문 분석 또는 이와 유사한 것을 처리하지 않고이를 수행하는 재미있는 방법은 다음과 같습니다.
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
" myprog -i foo bar -q
" 에서와 같이 옵션이 아닌 명령 줄 매개 변수를 허용하기 때문에 일반적인 Unix 옵션 구문은 아니지만 그와 함께 살 수 있습니다. (Subversion 개발자와 같은 일부 사람들은 이것을 선호합니다. 때로는 저도 그렇습니다.)
그냥 존재하거나없는 옵션은 위의 것보다 훨씬 간단하게 구현할 수 없습니다. (하나의 할당, 하나의 함수 호출, 하나의 부작용) " -f
filename " 과 같이 매개 변수를 사용하는 옵션을 처리하는 똑같이 간단한 방법이 있습니까?
편집하다:
Trollop의 저자가 라이브러리가 "하나의 [800 줄] 파일에 적합"하다고 언급 할 때까지 명확하지 않았기 때문에 이전에 언급하지 않은 한 가지 요점은 내가 깨끗한 것만을 찾고 있다는 것입니다. 구문이지만 다음과 같은 특성을 가진 기술에 사용됩니다.
코드 전체를 스크립트 파일에 포함 할 수 있으므로 (실제 스크립트 자체를 압도하지 않고 몇 줄에 불과할 수 있음)
bin
표준 Ruby 1.8을 사용하는 모든 시스템 의 디렉터리에 단일 파일을 드롭 할 수 있습니다. . [5-7] 설치 및 사용. require 문이없는 Ruby 스크립트를 작성할 수없고 몇 가지 옵션을 구문 분석하는 코드가 12 줄 정도 미만인 경우이 요구 사항이 실패합니다.코드는 작고 단순해서 다른 곳에서 잘라내어 붙여 넣는 대신 트릭을 수행 할 코드를 직접 입력 할 수있을만큼 충분히 기억할 수 있습니다. 인터넷에 액세스 할 수없는 방화벽 서버의 콘솔에있는 상황을 생각해보십시오. 클라이언트가 사용할 수있는 빠른 스크립트를 함께 사용하려고합니다. 나는 당신에 대해 잘 모르지만 (위의 요구 사항에 실패하는 것 외에도) 45 줄의 단순화 된 마이크로 옵 파스조차도 암기하는 것은 내가 신경 쓰는 일이 아닙니다.
getoptlong
와 optparse
루비 후, 해당 시스템에서 작동하는 경우 - 당신은 당신의 스크립트를 배포 할 때 복사 할 필요가 없습니다, 표준 루비 라이브러리에있는 require 'optparse'
또는 require 'getoptlong'
너무 일 것이다.