shell - 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 并且后跟字符串。
解决方案
When option string begins with a colon ( ":"
) then getopts
ignores all errors. 所以,只需取出前导冒号。
推荐阅读
- python - 查找图像上的特定点
- java - Jackson FAIL_ON_UNKNOWN_PROPERTIES 为 false 不起作用
- php - “.default”在 Symfony 服务 ID 中有什么特殊意义吗?
- powerbi - Power BI 比较日期
- c# - 是否可以从 C# 中的根 CA 动态生成 SSL 证书?
- jquery - 无法访问 DataTables 实例
- python - 如何按照 list(aList) 的原始出现顺序获取 list(set(aList)) 值?
- javascript - 禁用 Chrome 网络安全后仍然强制执行 CORS?
- sql - DB2 SQL 语句 - 是否可以 A) 声明一个临时表 B) 用数据填充它然后 C) 对它运行一个 select 语句?
- python - 如何仅在表格的名称列中添加名称?