一个衬里Bash参数验证,带有和不带有目录验证
这是一些对我有用的方法。您可以在全局脚本名称空间中使用它们(如果在全局名称空间中,则不能引用函数内置变量)
快速又脏的一根内胆
: ${1?' You forgot to supply a directory name'}
输出:
./my_script: line 279: 1: You forgot to supply a directory name
Fancier-提供功能名称和用法
${1? ERROR Function: ${FUNCNAME[0]}() Usage: " ${FUNCNAME[0]} directory_name"}
输出:
./my_script: line 288: 1: ERROR Function: deleteFolders() Usage: deleteFolders directory_name
添加复杂的验证逻辑,而不会影响当前功能
在接收自变量的函数或脚本中添加以下行。
: ${1?'forgot to supply a directory name'} && validate $1 || die 'Please supply a valid directory'
然后,您可以创建一个类似以下内容的验证函数
validate() {
#validate input and & return 1 if failed, 0 if succeed
if [[ ! -d "$1" ]]; then
return 1
fi
}
一个die函数,该函数会在失败时中止脚本
die() { echo "$*" 1>&2 ; exit 1; }
对于其他参数,只需添加其他行,即可复制格式。
: ${1?' You forgot to supply the first argument'}
: ${2?' You forgot to supply the second argument'}