我想要一个 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)。我怎样才能在选项之前有位置参数?