我有bash脚本:
#!/bin/bash
if [ -z $1 ] || [ -z $2 ] || [ -z $3 ]
then
{ echo >&2 "Required parameters missing "; exit 1; }
fi
echo "Success"
脚本需要3个必需参数。但我还需要确保$ 1不包含。 $ 2和$ 3不包含。和/和\
。
如何实现?
答案 0 :(得分:3)
首先,使用${name?:msg}
形式的参数扩展来验证您具有非空值:
: ${1?:Missing parameter 1}
: ${2?:Missing parameter 2}
: ${3?:Missing parameter 3}
然后,使用[[ ... ]]
命令执行模式匹配。
if [[ $1 = *.* ]]; then
echo >&2 "Invalid parameter 1 "
exit 1
fi
if [[ $2 = *[./\\]* ]]; then
echo >&2 "Invalid parameter 2 "
exit 1
fi
if [[ $3 = *[./\\]* ]]; then
echo >&2 "Invalid parameter 3 "
exit 1
fi
如果您需要坚持使用POSIX构造,请使用case
语句代替[[ ... ]]
:
case $1 in
*.*) echo >&2 "Invalid parameter 1"; exit 1;;
esac
case $2 in
*[./\\]*) echo >&2 "Invalid parameter 2"; exit 1;;
esac
case $3 in
*[./\\]*) echo >&2 "Invalid parameter 3"; exit 1;;
esac