arrays - Bash 数组 : appending and prepending to eac

我正在尝试构建一个涉及 find 的长命令。我有一个我想忽略的目录数组,我想将此目录格式化为命令。

基本上,我想转换这个数组:

declare -a ignore=(archive crl cfg)

进入这个:

-o -path "$dir/archive" -prune -o -path "$dir/crl" -prune -o -path "$dir/cfg" -prune

这样,我可以简单地将目录添加到数组中,find命令会做相应的调整。

到目前为止,我想出了如何使用前置或附加

${ignore[@]/#/-o -path \"\$dir/}
${ignore[@]/%/\" -prune}

但我不知道如何将这些组合起来并同时添加到数组的每个元素。

最佳答案

你不能同时轻松地做到这一点。幸运的是,您不需要:

ignore=( archive crl cfg                    )
ignore=( "${ignore[@]/%/\" -prune}"         )
ignore=( "${ignore[@]/#/-o -path \"\$dir/}" )

echo ${ignore[@]}

注意括号和双引号 - 它们确保数组在每次替换后包含三个元素,即使涉及空格。

关于arrays - Bash 数组 : appending and prepending to each element in array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602847/

相关文章:

python - 从 lxml.objectify.ObjectifiedElement 中剥离 p

java - 将 4 位军用时间转换为标准 12 小时时间格式

postgresql - 在 PostgreSQL 中格式化 double

c++ - 在不改变缩进的情况下重新格式化 C++ 大括号?

django - 如何格式化 django 评论的表单字段?

c# - 使用 C# 格式化字符串中的句子

.net - 如何将 NLog 的文件名设置为进程开始日期?

file-io - 将数据按列写入文件(Fortran)

c# - 将规范化的电话号码转换为用户友好的版本

javascript - 有没有办法使用 Moment.js 解析相对日期?