假设我将一些数据读入一个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..。我想知道在使用${w%%/*}时是否有一种方法可以使用shell参数展开printf,而不是循环所有元素并对每个元素执行它。
发布于 2021-01-21 14:17:02
基于@fedorqui的答案,如果OP想输出数组而不是字符串,这对我来说是有效的-
a=(alpha beta gamma)
newArr=( "${a[@]//a/f}" )我亲自来到这篇文章,希望在对数组的每个元素进行替换之后,输出一个数组。
https://stackoverflow.com/questions/37698108
复制相似问题