【发布时间】: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