我是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))
这是正确的还是有任何明显的错误?有人可以解释变量何时需要引用以及何时不需要引用?
答案 0 :(得分:1)
resDir=/home/username/repo/results
str="pattern"
arr=( "$resDir"/*"$str"* )
=
周围放置空格;这样做会使语法不再是一个赋值。 (resDir = /home/username/repo/results
运行名为resDir
的命令,并将其作为第一个参数传递给它{。}}。=
运算符[[ ]]
和=
的右侧,当扩展字符串应被视为glob模式或正则表达式而非文字文本时)非常罕见。相比之下,由于未能引用扩展而导致的错误非常普遍。=~
s不得引用,如果你希望它们触发全局扩展而不是按字面意思对待。*
不得用于编写脚本。顺便说一下 - 结果结构是一个数组。下面是扩展数组内容的语法示例:
ls