bash - getopts 没有正确解析 args
问题描述
这是我的简短脚本:
#!/bin/bash
user=""
secret=""
pkgname=""
while getopts ":p:s:u:" opt; do
case ${opt} in
p )
pkgname=$OPTARG
echo "p=$pkgname"
;;
s )
secret=$OPTARG
echo "s=$secret"
;;
u )
user=$OPTARG
echo "u=$user"
;;
\? )
usage
exit 1
;;
:)
echo "Option -$OPTARG requires an argument."
usage
exit 1
esac
done
当我使用以下命令运行它时:
./script.sh -u 'uuuu' -s 'aaaa' -p pkg.rpm
输出:
u=uuuu
s=aaaa -p
虽然我希望它是
u=uuuu
s=aaaa
p=pkg.rpm
我也尝试通过更改序列来进行参数的多种组合,但无法解决。为什么's'的值不正确?
解决方案
推荐阅读
- python - 用于时间序列分析的从季度到日期的列标题
- r - 如果向量中有值,则 R 中的新列
- react-native - 运行 npm start (expo) 时出错 - 错误监听 EADDRINUSE: address already in use :::19000 - 但看起来程序本身正在使用这样的端口
- android - Retrofit2 Upload Using RequestBody 返回 400 Bad Request (Android Kotlin MVVM & ASP.NET Core Web API)
- sql-server - 如何将空值转换为空白,将数字转换为小数点后 3 位?
- android - Android - 打开软键盘并在没有对话框或布局或编辑文本的情况下获取值
- node.js - 节点:Cookie 未在浏览器中使用此代码 res.cookie("singingGroupAVoted", true, {maxAge: 432000 * 1000, sameSite: "none", secure: true})
- sql - 将两个 SQL 查询合并为一个查询的最佳方法
- c++ - 以--------为分隔符将字符串剪切成单词
- r - WGCNA 用于多种表型和基因表达