Shell 在getopts中使用if-block-in-while-case语句是一种好的做法吗

Shell 在getopts中使用if-block-in-while-case语句是一种好的做法吗,shell,getopts,Shell,Getopts,或者我应该从case station中移除if块并将其放在case while循环之后吗 好的做法是什么?有我可以参考的文件吗 在getopts中使用if-block-in-while-case语句是一种好的做法吗 主观上:当然,为什么不呢。除了缺少一个fi 我应该从case语句中删除if块并将其放在case while循环之后吗 主观上:这将是首选。对我来说 好的做法是什么 我认为一种常见的方法是只在选项解析中设置变量,然后在解析选项后编写健全性检查。但这并不是一种通用的方法,某些应用程序在解

或者我应该从case station中移除if块并将其放在case while循环之后吗

好的做法是什么?有我可以参考的文件吗

在getopts中使用if-block-in-while-case语句是一种好的做法吗

主观上:当然,为什么不呢。除了缺少一个
fi

我应该从case语句中删除if块并将其放在case while循环之后吗

主观上:这将是首选。对我来说

好的做法是什么

我认为一种常见的方法是只在选项解析中设置变量,然后在解析选项后编写健全性检查。但这并不是一种通用的方法,某些应用程序在解析选项时最好执行一些逻辑。和往常一样,最终的答案是:“视情况而定”

有我可以参考的文件吗

Linux手册页和POSIX程序员手册。有一个很好的例子,演示了如何先设置标志,然后编写健全性检查

    #!/bin/bash
while getopts ':s:r:' c
do
  case $c in
    s) if [ "$OPTARG" -ge 0 ]; then
        echo "value is $OPTARG"
       else 
         echo "enter value greater than 0";;
    r) echo "something";;
   
  esac
done