我有一个以getopts开头的脚本,其外观如下:
USAGE() { echo -e "Usage: bash $0 [-w <in-dir>] [-o <out-dir>] [-c <template1>] [-t <template2>] \n" 1>&2; exit 1; }
if (($# == 0))
then
USAGE
fi
while getopts ":w:o:c:t:h" opt
do
case $opt in
w ) BIGWIGS=$OPTARG
;;
o ) OUTDIR=$OPTARG
;;
c ) CONTAINER=$OPTARG
;;
t ) TRACK=$OPTARG
;;
h ) USAGE
;;
\? ) echo "Invalid option: -$OPTARG exiting" >&2
exit
;;
: ) echo "Option -$OPTARG requires an argument" >&2
exit
;;
esac
done
more commands etc
echo $OUTDIR
echo $CONTAINER
我对getopts相当陌生。我正在对该脚本进行一些测试,并且在某个阶段,我不需要/不想使用-c参数[-c]。换句话说,我正在尝试测试脚本的另一个特定部分,而该部分完全不涉及$ CONTAINER变量。因此,我只需在$ CONTAINER的所有命令前添加#,然后进行一些测试就可以了。
在不使用$ CONTAINER的情况下测试脚本时,我输入:
bash script.bash -w mydir -o myoutdir -t mywantedtemplate
但是,我想知道,鉴于我的getopts命令,我没有收到警告。换句话说,为什么我没有收到要求-c参数的警告。这可能吗?仅在输入以下内容时才会出现警告吗?
bash script.bash -w mydir -o myoutdir -t mywantedtemplate -c
更新
做完一些测试后,我想就是这样:
这正确吗?