【发布时间】:2021-01-21 22:17:02
【问题描述】:
假设我将一些数据读入 Bash 数组:
$ IFS=" " read -a arr <<< "hello/how are/you iam/fine/yeah"
现在,我想为数组中的每个元素打印第一个 /-sliced 字段。
我所做的是循环遍历元素并使用 shell 参数扩展从第一个 / 中剥离所有内容:
$ for w in "${arr[@]}"; do echo "${w%%/*}"; done
hello
are
iam
但是,由于printf 允许我们在单个表达式中打印数组的全部内容:
$ printf "%s\n" "${arr[@]}"
hello/how
are/you
iam/fine
...我想知道是否有一种方法可以在使用printf 时使用shell 参数扩展${w%%/*},而不是循环遍历所有元素并针对每个元素执行此操作。
【问题讨论】:
标签: arrays bash parameter-expansion