bash - 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 脚本中解决这个问题?
请帮忙。
解决方案
推荐阅读
- linux - ERRR:无法从 baseport = 54321 找到 /168.2.4.54 的空闲端口
- azure - VMExtensionProvisioningError:超时
- python - 将嵌入在 C 中的 Word2Vec 转换为 Python 的 Gensim Word2vec
- javascript - 节点服务器,html输入null
- reactjs - Redux Thunk:动作必须是普通对象
- c - 如何在 C 中获取不同时区的 Epoch 日期和时间?
- c++11 - std::vector.push_back(std::move(foo)) 有意义吗?
- java - 无法使用 marklogic-jena api 连接到 marklogic
- android - 在使用 android marshmallow 运行的 BBB 上没有显示
- java - 使用 Apache POI 和 Pdfbox 从 .docx 创建 PDF 时丢失样式