首页 > 解决方案 > Unix | Spark - 使用空格设置位置变量

问题描述

我有一个要求,我必须将过滤条件作为参数传递给 shell bash 脚本

eg "col IN ('abc')"

这很好用,当我通过火花提交直接传递它时。我想创建一个 bash shell 脚本并通过 shell 脚本传递它

./shell.sh "col IN ('abc')"

现在,我在上述 shell 脚本方法中面临的问题是,即使我用双引号传递参数,但 bash-4.1 仍然将它拆分为多个参数,这进一步破坏了我的 spark 代码。

我知道我可以反斜杠 shell 脚本中的参数引号并将其提供给 EVAL 函数并使其工作,因为下面对我有用,但问题是,我必须将此 1 行脚本提供给非编程人员(他只知道基本的 SQL)并且不想在每次运行程序时都将他与管理反斜杠混淆。

./shell.sh "\"col IN ('abc')\""

我在参数上也尝试了很多操作,然后通过

set -- param

但是 bash 再次将其拆分为多个参数。有没有一种简单的方法可以在 shell 脚本中解决这个问题?

请帮忙。

标签: bashshellapache-sparkunixscripting

解决方案


推荐阅读