当前位置: 首页 > 知识库问答 >
问题:

如果没有命令行参数作为参数传递,则bash-throw用法警告

宣冥夜
2023-03-14

示例脚本如下所示,

#!/bin/bash

function Usage() {
    echo "Usage: $0 [-q] [-d]"
    echo ""
    echo "where:"
    echo "     -q: Query info"
    echo "     -d: delete info"
    echo ""
}

# Exit if no argument is passed in
: ${1?Usage}

while getopts "qd" opt; do
    case $opt in
        q)
            echo "Query info"
            ;;
        d)
            echo "Delete info"
            ;;
        *)
            Usage;
            exit 1
            ;;
    esac
done

共有1个答案

柯升
2023-03-14

这个呢?

function Usage() {
    echo "Usage: $0 [-q] [-d]"
    echo ""
    echo "where:"
    echo "     -q: Query info"
    echo "     -d: delete info"
    echo ""
}

# Exit if no argument is passed in
: ${1?"$(Usage)"}

总之,我觉得这更有可读性:

if [ $# -lt 1 ] ; then
    Usage
fi

另一个想法是这样处理:

mode=""
while getopts "qdh" opt; do
    case $opt in
        q)
            mode="Query info"
            ;;
        d)
            mode="Delete info"
            ;;
        h)
            Usage
            exit 0
            ;;
        *)
            Usage >&2
            exit 1
            ;;
    esac
done

if [ -z "${mode}" ] ; then
    Usage >&2
    exit 1
fi
 类似资料:
  • 如何将字符串的命令行参数传递给java main方法,以便调用另一个类中的特定方法? 我需要能够通过“java Statdriver mean”调用mean方法,或者“java Statdriver std”调用标准偏差方法,或者不传递任何参数将导致通过终端调用mean方法。 按我的方式做似乎不起作用。我认为我的问题在于如果,否则如果,否则循环。 这是我的密码:

  • 问题内容: 我正在尝试从命令行运行Java计算器应用程序。参数如下:运算符operon1操作数2。我可以为+和-成功运行Java程序。 例如 Java Calc + 2 4 Java Calc-10 4 但是当我尝试运行 java * 2 5时 给出输出: .classpath .project .settings 我通过反复试验发现使用单引号(’‘)解决了我的问题。所以我现在有两个问题。 1.使

  • 要启动Java程序,我可以传递如下参数: 在gradle命令行中有哪些好的方法可以做到这一点: 这是正在建造的。格雷德尔:

  • 如果你需要在命令行下插入一个值,通常需要使用引号将其括起来,尤其是当其包含空格时更是如此。 shellquote 函数可以携带任意数量的参数(包括数组), 它会使用引号将每个参数都括起来并返回一个可以传递到 Shell 命令行上的以空格间隔的字符串。 在下面的例子中,我们想要创建一个用于文件改名的 exec 资源, 然而源文件名和目标文件名都包含空格,因此在命令行上需要正确地使用引号将它们括起来。

  • 我尝试将参数从命令行传递到gradle。 我的身材是: 当我这样做时: 我得到这个: 我的问题是我应该为main提供什么?任何java文件包的名称?有具体的路径吗?什么应该是真正的源集?

  • public static void main(String[]args){ 公共类CustomConfiguration{ public static void readConfig(String filename){//从config.properties文件读取 } 我的问题是如何将“a”传递给CustomConfiguration类?