给定这个数组
foo=(123 456 789)
我想创建一个由每个元素的第一个字符组成的新变量。这适用于上一个数组
bar=${foo[*]/%??}
但我更喜欢一种可以与不同长度元素配合使用的解决方案。
您可以使用:
echo "${foo[@]%[0-9][0-9]}"
1 4 7
或将它们存储到数组中:
bar=("${foo[@]%[0-9][0-9]}")
declare -p bar
declare -a bar='([0]="1" [1]="4" [2]="7")'
printf
用于可变长度输入元素的替代方法:
foo=(1344423 4876556 78945)
bar=( $(printf "%1.1s\n" "${foo[@]}") )
declare -p bar
declare -a bar='([0]="1" [1]="4" [2]="7")'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句