bash循环来自多个配置的相同变量
我试图在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"
- 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的原始代码就是这样做的)。感谢您的评论