【发布时间】:2022-01-15 01:32:56
【问题描述】:
我有一个 bash 函数,允许用户设置选项和参数。
heading [OPTIONS] PARAM...
我已经指定了以下选项
-V, --version, -v, --verbosity, -u, --usage, -h, --help
--vlt, --blu, --grn, --ylw, --orn, --pur, --red, --wht, -mSTY
如果无效选项被可用的功能选项包围,我想针对无效选项发出警告。
这很好
heading --vlt -m1 PARAMS
这也很好,因为 -adv 出现在所有可用选项之后
heading --vlt -m1 -adv Din
但这需要一个警告,因为 --adv 出现在可用选项 -m1 之前
heading --vlt --adv -m1 Din
这里列出了函数
copt ()
{
while (( $# > 0 )); do
case $1 in
("-V"|"--version") shift ; return 0 ;;
("-v"|"--verbosity") vb=1 ; shift ;;
("-u"|"--usage") usg=1 ; shift ; return 0 ;;
("-h"|"--help") shift ; return 0 ;;
("--vlt") vlt=$(tput setaf 57) ; shift ;;
("--blu") blu=$(tput setaf 12) ; shift ;;
("--grn") grn=$(tput setaf 2) ; shift ;;
("--ylw") ylw=$(tput setaf 3) ; shift ;;
("--orn") orn=$(tput setaf 166) ; shift ;;
("--pur") pur=$(tput setaf 93) ; shift ;;
("--red") red=$(tput setaf 1) ; shift ;;
("--wht") wht=$(tput setaf 7) ; shift ;;
("-m"*) sty="${1#-m}" ; shift ;;
("--") shift ; break ;;
(*) break ;;
esac
done
}
【问题讨论】:
-
一个带有帮助信息的函数?无论如何,尚不清楚您对“可用选项”的标准是什么,并且关于选项处理的许多问题可能已经回答了您的问题,无论它可能是什么。提问前请先搜索,如果您仍需要帮助,请edit 说明您真正想要什么以及您已经尝试过什么。
-
添加了更多细节。如果在有效选项之间出现无效选项,我只想要一个警告,不包括最后的无效选项。
-
-adv和--adv在您的问题中是否故意不同?如果是这样,那么以 1-与 2-s 开头的字符串对您的问题有什么影响?如果没有,请解决您的问题。