我有一个脚本myscript
应该执行以下操作:
myscript
myscript myarg
myscript -a 1 -b 2 -c 3 ...
myscript myarg -a 1 -b 2 -c 3 ...
我似乎无法使用4.工作,似乎在选项前面使用了一个参数(我从getopts
获取)会干扰getopts
处理所有内容的方式。
我使用的代码基本上是这样的:
while getopts "a:b:c:" opt; do
case ${opt} in
a)
var_a=$OPTARG
;;
... more options here
esac
done
if [ ! -z "$1" ] && [[ ! "$1" =~ ^- ]]; then
... do stuff with first argument - if it's there and it's not just an option
fi
如果这个问题有一个简单的解决方案,我会非常感激!
答案 0 :(得分:1)
您可以在脚本的最后shift
中使用if
(一般的想法已经存在,正如您所写"做第一个参数的事情 - 如果它在那里并且它不仅仅是一个选项")。