bash循环来自多个配置的相同变量

bash循环来自多个配置的相同变量,bash,Bash,我试图在bash中从多个文件中循环相同的变量。这是我的文件结构和内容 script.sh first.conf second.conf 在first.conf的内部 var=Hello1 var=Hello2 在second.conf的内部 var=Hello1 var=Hello2 script.sh的内部 #!/bin/bash _a=`find ~/ -name "*.conf"` source ${_a} for x in ${_a} do echo "$var"

我试图在bash中从多个文件中循环相同的变量。这是我的文件结构和内容

  • script.sh
  • first.conf
  • second.conf
first.conf的内部

var=Hello1
var=Hello2
second.conf的内部

var=Hello1
var=Hello2
script.sh的内部

#!/bin/bash

_a=`find ~/ -name "*.conf"`

source ${_a}

for x in ${_a}
do
  echo "$var"
done
这看起来可能真的很愚蠢,但是,我对编程真的很陌生

我试图做的是从两个不同的配置中循环和回显这些
$var
s

我该怎么做呢?

考虑一下:

while IFS= read -r -d '' conf; do
  (source "$conf" && echo "$var")
done < <(find ~ -name '*.conf' -print0)
而IFS=read-r-d''conf;做
(来源“$conf”和&echo“$var”)

完成<这是一种更短更简单的方法

#!/bin/bash

for f in *.conf
do
        source "$f"; echo "$f : $var"
done

find
的输出存储在单个字符串中本身并不总是一个好主意。看看当文件名有空格时会发生什么,或者更糟的是,如果文件包含换行符<代码>查找
返回多个结果;数组是在bash中存储多个字符串的本机方法(使用NUL而不是换行符分隔符可以区分通过
find
添加为分隔符的换行符和作为文件名一部分的换行符)。感谢您的智慧之言,我一定会在学习过程中考虑到这些问题<代码>源“$f”
对于名称中有空格的文件是可靠的。如果没有
find
shopt-s globstar
后跟
***.conf
,它将不会搜索子目录(OP的原始代码就是这样做的)。感谢您的评论