这个脚本可以正常工作,但是它只能在两个位置搜索一个文件。
清单 4 提供相同的功能,但是允许用户在任何位置搜索任何文件。
清单 4. 使脚本更灵活
#!/bin/bash
exit_msg() {
[[ $# -gt 1 ]] && echo "${0##*/} (${1}) - ${2}"
exit ${1:-0}
}
[[ $# -lt 2 ]] && exit_msg 1 "Usage: ${0##*/} <file name> <location>"
_FNAME="${1}"
_DNAME="${2}"
[[ ! -d "${_DNAME}" ]] && exit_msg 2 "Unable to read or find Directory '${_DNAME}'"
if [[ -f "${_DNAME}/${_FNAME}" ]]
then
exit_msg 0 "Found file '${_DNAME}/${_FNAME}'"
else
exit_msg 3 "Unable to find file '${_DNAME}/${_FNAME}'"
fi
这个脚本更灵活,因为它允许用户指定要搜索的任何文件和任何搜索目录。
提供选项
在编写一个 shell 脚本时,一些用户可能会说,“它真不错! 或者 “我喜欢使用它;而同时,其他用户可能不同意这个评价,他们可能不希望执行相同的操作。人们喜欢有选择,为什么不给他们提供选项呢?内置的 shell 命令 getopt 可以完成这个任务。
清单 5 提供一个在 AIX 中使用 getopt 的基本示例。
清单 5. getopt 示例
#!/usr/bin/ksh
_ARGS=`getopt -o x --long xxxxx -n ${0##*/} -- "$@"`
while [[ $# -gt 0 ]]
do
case "${1}" in
-x|--xxxxx) echo "Arg x hit!"shift;;
--) shift; break;;
*) echo "Invalid Option: ${1}"break;;
esac
done
标签: