Shell数组元添加和删除前后缀
添加前后缀
在Linux中使用bash正则表达式来为数组元添加前缀和后缀是一个标准的做法,这在脚本编写中是一个很方便的操作。例如:
1
2
3ARRAY=( one two three )
echo ${ARRAY[@]/#/prefix_}
echo ${ARRAY[@]/%/_suffix}
除了正则表达式外,还有一种漂亮的解决方案: 1
2
3
4$ ARRAY=(A B C)
$ mapfile -t -d $'\0' EXPANDED < <(printf "prefix_%s_postfix\0" "${ARRAY[@]}")
$ echo "${EXPANDED[@]}"
prefix_A_postfix prefix_B_postfix prefix_C_postfix
mapfile
将行读入数组的元素。使用-d $'\0'
,它将读取以null
分隔的字符串,并且-t
将从结果中省略分隔符。参见help mapfile
。
删除前后缀
删除后缀
1 | ARRAY=( one.git two.git three.git four.me ) |
删除前缀
1 | ARRAY=( pre.one pre.two pre.three me.four ) |
注意:在删除前后缀中,使用的*
是正则表达式,表示任意个字符,若要删除指定字符,应当输入具体的字符。