【发布时间】:2018-02-03 23:22:24
【问题描述】:
我正在尝试像这样使用 getopts:
#!/bin/bash
while getopts "i" option
do
case "${option}"
in
i) INT=${OPTARG};;
esac
done
echo "$INT"
但只有当我使用getopts "i:" 时它才会打印 $INT。如果我理解正确,optstring 中的冒号表示相应标志需要值。但我想让这个标志成为可选的。
谁能解释为什么脚本会这样,我该如何解决?
【问题讨论】:
-
冒号的存在意味着需要一个选项参数。没有冒号意味着根本不需要选项参数。
getopts上的 Bash 手册不支持可选参数。为此,您需要 GNUgetopt(具有很多不同的语义)。 -
@JonathanLeffler 啊,非常感谢。我想我需要删除我的问题,因为它无法回答。
-
查看相关问题Using
getoptsin Bash shell script to get long and short command line options。它不是直接复制的,但包含有用的信息。 -
frodo.looijaard.name/project/getopt 提供了一个扩展的
getopt命令版本。