我正在写一个可以带2-4个参数的脚本:
arg1 arg2 arg3 arg4
arg2
和arg3
是必填项,我们会提供,但arg1
和arg4
是可选的。在三参数的情况下,我如何检查是否给出arg4
?
如果参数的数量是4,那么这是显而易见的;但是,只有三个参数,我无法判断它是否存在arg1
或arg4
,如下例所示:
./script arg2 arg3 arg4
答案 0 :(得分:1)
作为e0k评论,你需要重新思考你如何传递你的论点。对于可选的东西,你应该使用...选项。像
prog -a arg1 -b arg4 arg2 arg3
prog -a arg1 arg2 arg3
prog -b arg4 arg2 arg3
prog arg2 arg3
所以
#!/bin/bash
arg1="default value for arg1"
arg4="default value for arg4"
while getopts a:b: opt; do
case $opt in
a) arg1=$OPTARG ;;
b) arg4=$OPTARG ;;
esac
done
shift $((OPTIND-1))
if [[ "$#" -ne 2 ]]; then
echo "ERROR: you failed to provide 2 mandatory arguments" >&2
exit 1
fi
arg2=$1
arg3=$2
# do stuff with "$arg1", "$arg2", "$arg3", "$arg4"