我想要一个 shell 脚本,它将文件名作为第一个位置参数,后跟选项(./test.sh <file> [options]
)。但是,当我在选项之前给出位置参数时,getopts 不起作用。我有以下代码:
while getopts "h" opt; do
case $opt in
h)
echo usage
;;
;;
esac
done
echo $1
./test.sh -h
在外壳上打印usage
,但在外壳上./test.sh test -h
打印test
。因此,当我在选项之前给出位置参数时,它不会对该选项做任何事情。在选项后面有位置参数时它确实有效(更改echo $1
为echo $BASH_ARGV
和调用./test.sh -h test
)。我怎样才能在选项之前有位置参数?