【发布时间】:2018-08-20 12:56:43
【问题描述】:
我正在尝试通过添加带有“外部世界”信息(即用户输入)的参数来构建命令行。
假设我想 grep 文件以获取用户给我的一组单词(这只是向您展示用例,我真的在尝试运行生物信息学代码,但每个人都有 grep 用于测试目的)。我的想法是我将在 bash 数组中有一个单词列表:
$ L=("foo" "bar")
我想使用该列表来结束与
$ grep -e foo -e bar input.txt
我使用了一种生成需求参数字符串的方法
$ P=${L[@]/#/-e }
$ echo "$P"
-e foo -e bar
但我不能按原样使用它(假设文件包含 foo 和 bar):
$ grep "$P" input.txt
<No output>
最后一条命令,实际搜索的是字符串“-e foo -e bar”。
如果我在不带引号的情况下运行该命令,它可以工作,但它也会触发 shellcheck.net 中的 SC2086 警告,这是我试图避免的。
我已经尝试了几种数组、括号、引号的组合...但我无法确定满足我需要的确切语法。有人有这种语法吗?
【问题讨论】:
标签: bash