Shell Bash可选参数

Shell Bash可选参数,shell,posix,Shell,Posix,有人能告诉我,是否有某种方法可以检查可选参数后面是否跟有字符串,如果不是,则会出现错误消息 我的目标是拥有类似于./nameofscript的东西—一个字符串 I=0 while getopts ":a:k" opt; do case ${opt} in a ) I=1 string="$OPTARG" 所以我的目标是…如果用户类型./nameofscript,它将继续,因为没有传递可选参数…但是如果用户类型./nameofscript-程序必须退出,因为它后面没有任

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

我的目标是拥有类似于./nameofscript的东西—一个字符串

I=0

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

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


那么,有没有办法知道-a是否被键入/a是否被键入,后面是字符串。

当选项字符串以冒号开头时:那么getopts会忽略所有错误。因此,只需去掉前面的冒号。

如何使用getopts?你能展示你的剧本吗?getopts可能需要参数。你能回答这个问题并添加脚本,并指定什么不起作用的确切含义吗?我通过在getopts中添加另一个选项来修复它:但还有一件事我不能弄清楚。如何防止用户键入相同的可选参数2次,例如/脚本-a-a的名称将导致错误,因为1。没有争论和争论。他们提出了两个相同的论点passed@jerry:如果您面临新问题,请在Stackoverflow上创建新问题,而不是在评论中提问。毕竟,你的新问题可能会引起很多用户的兴趣。