3
我正在尋找一個可重用的代碼片斷,它爲bash執行命令行參數驗證。Bash的命令行參數驗證庫
理想一些類似於由Apache的百科全書CLI提供的功能:
共享CLI支持不同類型的選擇:
- POSIX類似的選項 (即焦油-zxvf的foo.tar.gz。)
- GNU等長選項(即杜--human可讀--max深度= 1)
- 短選項附值(即GCC -O2 foo.c的)
- 長選項與單個連字符(即。螞蟻-projecthelp)
- ...
,並自動生成程序中的「用法」的消息,像這樣:
usage: ls
-A,--almost-all do not list implied . and ..
-a,--all do not hide entries starting with .
-B,--ignore-backups do not list implied entried ending with ~
-b,--escape print octal escapes for nongraphic characters
--block-size <SIZE> use SIZE-byte blocks
-c with -lt: sort by, and show, ctime (time of last
modification of file status information) with
-l:show ctime and sort by name otherwise: sort
by ctime
-C list entries by columns
我將包括之初此代碼段我Bash腳本並跨腳本重用它。
一定有這樣的事情。我不相信我們都編寫代碼來這種效果或類似:
#!/bin/bash
NUMBER_OF_REQUIRED_COMMAND_LINE_ARGUMENTS=3
number_of_supplied_command_line_arguments=$#
function show_command_usage() {
echo usage:
(...)
}
if ((number_of_supplied_command_line_arguments < NUMBER_OF_REQUIRED_COMMAND_LINE_ARGUMENTS)); then
show_command_usage
exit
fi
...
使用'getopts'作爲簡短選項。參見[BashFAQ/35](http://mywiki.wooledge.org/BashFAQ/035)。用Python編寫腳本並使用[argparse](http://docs.python.org/library/argparse.html)。 –
我懷疑答案是缺乏模塊基礎結構使得以可移植的方式加載源庫與每次重寫選項解析大致相同的工作量。 – tripleee