我正在寻找一个可重用的代码片段,它对 bash 进行命令行参数验证。
理想情况下类似于 Apache Commons CLI 提供的功能:
Commons CLI 支持不同类型的选项:
- 类似 POSIX 的选项(即 tar -zxvf foo.tar.gz)
- GNU 喜欢长选项(即 du --human-readable --max-depth=1)
- 附加价值的空头期权(即 gcc -O2 foo.c)
- 带有单个连字符的长选项(即 ant -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
...