如何在bash脚本中传递附加参数



我想设计一个管道来执行一个可以通过参数进行多种配置的程序。开发人员对将每个参数作为变量不感兴趣,他们希望能够通过使用管道添加多个变量。我们使用bash,我们使用gitlabci进行开发,我们使用octopus进行uat-env部署。

示例:

spark2-submit 
--master $MASTER 
--name $NAME 
--queue $QUEUE 
--conf spark.shuffle.service.enabled=true 
--conf spark.dynamicAllocation.enabled=true 
--conf spark.dynamicAllocation.executorIdleTimeout=12 

正如你在上面的例子中看到的,我希望在添加更多"--conf";参数。

我应该有一个伪参数,然后把它添加到这个命令的末尾吗?

例如:

spark2-submit 
--master $MASTER 
--name $NAME 
--queue $QUEUE 
--conf spark.shuffle.service.enabled=true 
--conf spark.dynamicAllocation.enabled=true 
--conf spark.dynamicAllocation.executorIdleTimeout=12 
$additional_param

我的代码回购使用Gitlab,CICD使用Octopus。我正在使用bash进行部署。我正在寻找一个灵活的选项,我可以使用八达通变量选项和gitlab的全部功能。你的建议是什么?你有更好的建议吗?

这就是Charles所暗示的"参数列表应存储在数组中":

spark2_opts=(
--master "$MASTER"
--name "$NAME"
--queue "$QUEUE"
--conf spark.shuffle.service.enabled=true
--conf spark.dynamicAllocation.enabled=true
--conf spark.dynamicAllocation.executorIdleTimeout=12 
)
# add additional options, through some mechanism such as the environment:
if [[ -n "$SOME_ENV_VAR" ]]; then
spark2_opts+=( --conf "$SOME_ENV_VAR" )
fi
# and execute
spark2-submit "${spark2_opts[@]}"

bash数组定义可以包含任意空格,因此格式的可读性

相关内容

  • 没有找到相关文章

最新更新