arrays - Bash 脚本和数组推送

标签 arrays linux bash

我正在尝试制作一个脚本,它会找到一个文件,获取它们的目录名,然后去那里做一些事情。我在向数组添加元素时遇到问题,我希望谁成为我的目录名容器。

代码如下所示:

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/

相关文章:

Linux 脚本意外的文件结束错误

jquery - AJAX 将 JavaScript 字符串数组发布到 JsonResult 作为 List<string> 总是返回 Null?

c - C语言循环过程中数组元素的值会自行改变

linux - 从 SAR 中获取月度数据并显示干净的结果

linux - 安装 aurelia cli 时出现 "npm not being able to find a file abbrev"

php - UTF-8贯穿始终

java - 在 -XX :OnOutOfMemoryError using shell script gives: Unrecognized option: -9 上重新启动进程

linux - 向所有使用 Wall 的人广播用户消息

Javascript json,检查所有键是否未定义 ('null' )并设置默认值

java - 根据列对二维整数数组进行排序