bash - 如何在 bash 中缩短长的多重检查变量?
问题描述
我想检查 bash 中的多个变量但结果太多了,有什么办法可以缩短这个
我最终是这样的
if [[ $1 == -a || $2 == -a || $3 = -a ]] && [[ $1 == -b || $2 == -b || $3 = -b ]] && [[ $1 == -c || $2 == -c || $3 = -c ]] && [ $# -eq 4 ]; then
echo "insert some words"
exit
fi
我试过这个来缩短它,但不会工作
a=-a
b=-b
c=-c
if [[ ${@:1:3} == $a || ${@:1:3} == $b || ${@:1:3} == $c ]] && [ $# -eq 4 ]; then
echo "insert some words"
exit
fi
有没有办法缩短这个?提前致谢!
解决方案
选项getopts
while getopts ":a:b:c:" opt; do
case $opt in
(a) a=$OPTARG;;
(b) b=$OPTARG;;
(c) c=$OPTARG;;
esac
done
echo $a $b $c
或者只是case
while [[ $@ ]]; do
case $1 in
(-a) a=$2;;
(-b) b=$2;;
(-c) c=$2;;
esac; shift
done
echo $a $b $c
推荐阅读
- excel - VBA 动态链接到另一个文件
- python - 将最小二乘法从 C 转换为 Python 时出现 IndexError
- rest-assured - 通过 RestAssured 类执行 GET ID 时获得 500 内部服务器错误状态,而在 Swagger 工具上尝试时收到 200 状态
- java - 有没有更好的方法来扩展 Java Enum?
- javascript - HTML 输入 - 以编程方式设置输入值时撤消历史记录丢失
- c - 使用 -O3 的冒泡排序比使用 GCC 的 -O2 慢
- excel - 从另一个单元格填充的动态数据验证列表
- python - 在 python 中更好的输入提示?
- python - Pip 不适用于 Ubuntu 上的 Python 3.10
- node.js - 错误未知身份验证策略“本地”