bash - 从 shellscript 中选择了一个选项,或者没有一个选项
问题描述
我不是 bash 脚本专家,我正在寻求帮助。我想在 while 循环条件的最后找到一种方法,除非选择了一个选项([-1|-2|-3])或者没有一个选项,否则脚本可以执行。
最好的方法是什么?我完全不知道该怎么做。非常感谢。
#!/bin/bash
echo " $0 [-e <option_e>] [-f <option_f>] [-1|-2|-3] [user@]fqdn"
OPTION1=""
OPTION2=""
OPTION3=""
while (( "$#" )); do
if [ "$1" == "-1" ]; then
OPTION1=1
elif [ "$1" == "-2" ]; then
OPTION2=1
elif [ "$1" == "-3" ]; then
OPTION3=1
fi
shift
done
我忘了提。这是脚本的一部分。此外,如果选择了 2 个以上的选项,则有几个条件可能会发生冲突。
编辑:有效的选择要么恰好是一个选项,要么为零,但不是两个或更多!
解决方案
谢谢 SamuelKirschner - 我确实添加了 [[ -n $ALL_OPTS ]] && 然后它起作用了!我现在很开心。
#!/bin/bash
OPTION1=""
OPTION2=""
OPTION3=""
while (( "$#" )); do
if [ "$1" == "-1" ]; then
OPTION1=1
elif [ "$1" == "-2" ]; then
OPTION2=1
elif [ "$1" == "-3" ]; then
OPTION3=1
fi
shift
done
ALL_OPTS="$OPTION1$OPTION2$OPTION3";
echo $ALL_OPTS
if [[ -n $ALL_OPTS ]] && [[ $ALL_OPTS -ge 2 ]];then
echo 'Please provide a maximum of one of the options [-1|-2|-3]' 1>&2
exit 1
fi
推荐阅读
- apache-spark - 杀死 oozie coordinator 不会杀死后续的 spark 作业
- c++ - WinAPI LoadImage 到按钮有边框但 LoadBitmap 没有
- python - 在 TF 服务或 TF 图的一部分中查找外部数据库
- jquery - jquery元素的茉莉花测试
- r - 从 .asp 中抓取表格
- java - 这个 docRoot 变量的位置是什么?
- python - 如何识别 Python 中的过拟合和欠拟合
- html - 仅在 Safari 上错误地显示超出包含 div/段落右边界的文本
- java - 在 TextButton 上测试事件处理程序
- javascript - 获取 TypeError: _this2.props.handleClick 在将 redux prop从容器传递到表示组件时不是一个函数反应