微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有输入任何参数时,如何使用getopts避免运行脚本?

这是我正在尝试做的

while getopts "h?rd" opt; do
    case "$opt" in
    h|\?)
        echo "invalid"
        exit 0
        ;;
    r)  report=1
        ;;
    d)  delete=1
        ;;
    esac
done

-r& -d工作,作为参数传递的任何其他字符也会发出错误.
但是如果我不使用参数,代码也会运行.我也希望同时提示错误.我该如何实现?

解决方法:

您可以使用bash的$#变量来查找任何参数.还可以通过在getopts中使用case *)获得其他无效参数.

#!/bin/bash

if [ $# -lt 1 ]; then
  echo "no arguments"
  exit 1
fi
while getopts ":h\?rd" opt; do
    case "$opt" in
    h|"\?")
        echo "valid"
        exit 0
        ;;
    r)  report=1
        ;;
    d)  delete=1
        ;;
    *)  echo "not valid"
        ;;
    esac
done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐