bash - 如何强制为 bash 脚本设置间隔选项
问题描述
我有以下脚本。
我想对其进行修改,以便如果我要temp.sh
使用这两个选项进行调用,我将不得不将它们隔开。即:对脚本的调用temp.sh -fc30
应该是无效的,而应该是temp.sh -f -c 30
ARGS=$(getopt -o c:f -l "charlie:fox" -n "temp.sh" -- "$@");
#bad args
if [ $? -ne 0 ];
then
exit 1
fi
eval set --"$ARGS";
while true; do
case "$1" in
-c|--charlie)
shift;
if [ -n "$1" ]; then
echo "-c =: $1";
shift;
fi
;;
-f|--fox)
shift;
echo "fox used";
;;
--)
shift;
break;
;;
esac
done
解决方案
只是不要使用getopt
.
#!/bin/bash
# parse options
while [[ $# -gt 0 ]]; do
case $1 in
-c|--charlie)
echo "$1 = $2"
shift
;;
-f|--fox)
echo "fox used"
;;
--)
shift
break
esac
shift
done
# do script
推荐阅读
- javascript - 如何做到这一点,当我选择一个选项时,它将显示一个选项并隐藏另一个
- python - 对 python、列表/生成器对象感到困惑
- sql - 用于关系数据库的表和 PK /FK
- ruby-on-rails - 显示值与返回值不一致
- java - NoSuchErrorMethod,Library.jar 适用于 Api 级别 28 但不是更低级别
- javascript - 如何从for循环返回数组输出并一一检查
- c++ - 如何在 C++ 中使用复杂变量数组?
- powerbi - 如何汇总同一发票中的项目类型以在 DAX 中查找百分比
- javascript - 内容随着负边距的变化而跳跃
- c# - 如何通过 linqtoexcel 从 excel 电子表格的列中找到最大值?