首页 > 解决方案 > Bash 可选参数

问题描述

有人可以告诉我是否有某种方法可以检查可选参数是否后跟字符串,如果不是,则会出现错误消息。

我的目标是拥有类似 ./nameofscript -a string

I=0

while getopts ":a:k" opt; do
  case ${opt} in
    a ) I=1 
    string="$OPTARG"

所以我的目标是……如果用户输入 ./nameofscript 它将继续,因为没有传递可选参数……但是如果用户输入 ./nameofscript -a 程序必须退出,因为它后面没有任何字符串。用户必须输入 ./nameofscript -a 字符串,如果他不输入,则会出现错误消息:你必须输入一些东西 blablabla ...

那么有什么解决方案可以知道是否输入了 -a/是否输入了 -a 并且后跟字符串。

标签: shellposix

解决方案


When option string begins with a colon ( ":") then getoptsignores all errors. 所以,只需取出前导冒号。


推荐阅读