在执行包含 getopt(称为 opttest)的脚本时,如果在 -x 或 --xxxxx 中使用有效的参数,getopt 会识别出开关并执行 case 开关中的代码:
# ./hm -x
Arg x hit!
下面是使用无效开关或选项时的结果:
# ./hm -a
Invalid Option: -a
文档,文档,文档
我们在职业生涯中早晚会受到这个问题的困扰。老板要求您看看一个 10 年前编写的脚本,它的作者已经不再为公司工作了。您会说 “没问题 吗?通常情况下,可能没问题;但是,如果这个脚本很复杂,执行了您不习惯使用的命令,采用的编写风格与您的风格不一样,或者干脆就不能正常工作,您就遇到大麻烦了。在这种情况下,一些反映作者当初编写这个脚本时的想法的提示会有很大的帮助。有时候,您开发了一个自认为只使用一次的脚本,但是以后却发现还需要修改它。或者,您用几星期时间编写了一个巨大的脚本,您了解这个脚本的所有细节,但是如果别人阅读它,却不知所云。这几种情况说明,文档之于开发人员就像脚本之于用户,都非常重要。
看看清单 6 所示的函数。
清单 6. 没有注释的脚本示例
confirm_and_exit() {
[[ ${_DEBUG_LEVEL} -ge 3 ]] && set -x
while [[ -z ${_EXIT_ANS} ]]
do
cup_echo "Are you sure you want to exit? [Y/N]
c" ${_PROMPT_ERR_ROW} ${_PROMPT_ERR_COL}
${_TPUT_CMD} cnorm
read ${_NO_EOL_FLAG:+${_READ_FLAG:-'-n'}} ${_NO_EOL_FLAG} _EXIT_ANS
${_TPUT_CMD} civis
done
case ${_EXIT_ANS} in
[Nn]) unset _EXIT_ANS; return 0;;
[Yy]) exit_msg 0 1 "Exiting Script";;
*) invalid_selection ${_EXIT_ANS}; unset _EXIT_ANS;;
esac
return 0
}
标签: