在Bash脚本中使用string作为参数

时间:2015-07-02 20:17:26

标签: bash

我是BASH脚本的新手。我试图在命令中使用变量。我想要的是,例如,如果目录“resDir”具有文件“patternOne.txt”,“patternTwo.txt”,“mylist.txt”,我希望数组“arr”同时具有“patternOne”。 txt“和”patternTwo.txt“中。我目前正在这样做:

resDir = /home/username/repo/results
str = "pattern"
arr = ($(ls resDir| grep str))

这是正确的还是有任何明显的错误?有人可以解释变量何时需要引用以及何时不需要引用?

1 个答案:

答案 0 :(得分:1)

resDir=/home/username/repo/results
str="pattern"
arr=( "$resDir"/*"$str"* )
  1. 任务中不得在=周围放置空格;这样做会使语法不再是一个赋值。 (resDir = /home/username/repo/results运行名为resDir的命令,并将其作为第一个参数传递给它{。}}。
  2. 扩展几乎总是安全的引用。例外(例如=运算符[[ ]]=的右侧,当扩展字符串应被视为glob模式或正则表达式而非文字文本时)非常罕见。相比之下,由于未能引用扩展而导致的错误非常普遍。
  3. =~ s不得引用,如果你希望它们触发全局扩展而不是按字面意思对待。
  4. *不得用于编写脚本。
  5. 顺便说一下 - 结果结构是一个数组。下面是扩展数组内容的语法示例:

    ls