我正在尝试制作一个脚本,它会找到一个文件,获取它们的目录名,然后去那里做一些事情。我在向数组添加元素时遇到问题,我希望谁成为我的目录名容器。
代码如下所示:
dirnames=()
while read -r line; do
echo "Looking for dirname "$line
dirname=$( dirname $(egrep -lir --include=pom.xml "<name>"$line"</name>" $application_dir))
dirnames+=($dirname)
done < $modules_file
echo "Acquired dirnames"
echo $dirnames
这就是答案:
Looking for dirname a
Looking for dirname b
Looking for dirname c
Acquired dirnames
/home/user/dev/workspace/a
我的“数组”中只有第一个目录。看起来每一次迭代都丢失了,我知道这些其他的目录名是因为我试图换行而找到的。
我在 bash 中阅读了很多关于数组的内容,但这种方法在任何地方都可以正常工作。
有什么建议吗?
最佳答案
展开整个数组的 Bash 语法是这样的:
echo ${dirnames[*]}
或者您可以访问单个元素。例如
echo ${dirnames[1]}
或者遍历数组:
for d in ${dirnames[*]}; do
echo $d
done
关于arrays - Bash 脚本和数组推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31693049/