【问题标题】:How to provide parameter in the shell script如何在 shell 脚本中提供参数
【发布时间】:2020-06-03 09:17:20
【问题描述】:

我有下面的shell脚本,我想在其中创建另一个参数,而不是$JAVA_BIN $JAVA_OPTS --workflow test_method --config config/dbimport.$1.properties in行中的in,我想提供该参数。

 #!/bin/bash

if [[ $# -lt 1 ]]; then
    echo "usage: test_method_full.sh <env> ; whereas env is one of dev|simu|prod"
    exit 1
fi

# ******************** Check arguments **********
if [[ $1 != "dev" && $1 != "simu" && $1 != "prod" ]]; then
    echo "env parameter has to be dev, simu or prod. Found ${1}"
    exit 3
fi


# ***************** Java-Environment **************

# use given JAVA_HOME or openjava-1.8  if available
if [[ -z ${JAVA_HOME} ]]; then
    # JAVA_HOME does not exist
    if [[ -d /opt/java-1.8  ]]; then
        JAVA_HOME=/opt/java-1.8
    else
        echo "JAVA_HOME could not be determined!"
        exit 5
    fi
fi

# set the Java binary based on JAVA_HOME
JAVA_BIN=${JAVA_HOME}/bin/java


$JAVA_BIN $JAVA_OPTS -classpath "/opt/Software/lib/*:/opt/Software/test_method/lib/*" --workflow test_method --config config/dbimport.$1.properties in   

在运行脚本时,它应该运行如下:

    test_method_full.sh simu /opt/Software/in

我不想在我的 shell 脚本中硬编码 /opt/Software/in/ 并使其在运行脚本时可以更改

【问题讨论】:

  • 我不明白问题是什么。没有行$JAVA_BIN [etc]。脚本是名为test_method_full.sh 还是您要调用的脚本?请更新您的问题以澄清您要做什么。
  • 我已经更新了问题..实际上我只是想放一小部分脚本...是的,脚本被称为 test_method_full.sh...我想运行脚本,例如 test_method_full。 sh simu /opt/localsoftware/in 有两个参数...第二个参数我不想在我的脚本中硬编码,因为它可以更改
  • 第二个参数就是$2 - 这就是你要找的吗?
  • 而不是 in 如果我只给 $2 行吗?
  • @l0b0 是的,所以如果我只给 $2 而不是 in 并使用两个参数运行脚本,它会起作用吗?

标签: bash shell parameters


【解决方案1】:

您可以选择将其作为可选参数传递(即"${2:-/opt/Software/in/}"),它可以覆盖默认值,但使用默认值,如果您不传递参数,或者为其使用环境变量,例如:@ 987654322@,您已经以类似的方式为JAVA_OPTS 这样做了。

【讨论】:

  • 实际上我不想在我的 shell 脚本中硬编码 /opt/Software/in/ 并在运行脚本时使其可更改..所以如果我只给 $2 而不是 in 并用两个运行脚本参数有效吗?
  • 您不必这样做。但是没有默认值意味着用户必须在每次运行时显式地提供参数。在这种情况下,您可能希望通过${2?:2nd argument missing} 获取参数。如果调用者忘记提供参数,这将中止脚本并显示可理解的错误消息。
猜你喜欢
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多