我有一个包含3个元素的bash数组,我需要从所有元素中删除第一个X数字字符,并从所有元素中删除最后的Y个字符。这怎么能实现。下面的例子:在Bash中删除数组中的每个元素的开始和结束
echo ${array[@]}
random/path/file1.txt random/path/file2.txt random/path/file3.txt
我想这个数组成为
echo ${array[@]}
file1 file2 file3
如何才能实现这一目标?
我有一个包含3个元素的bash数组,我需要从所有元素中删除第一个X数字字符,并从所有元素中删除最后的Y个字符。这怎么能实现。下面的例子:在Bash中删除数组中的每个元素的开始和结束
echo ${array[@]}
random/path/file1.txt random/path/file2.txt random/path/file3.txt
我想这个数组成为
echo ${array[@]}
file1 file2 file3
如何才能实现这一目标?
这将大大有一个镜头:
$ a=("/path/to/file1.txt" "path/to/file2.txt")
$ basename -a "${a[@]%.*}"
file1
file2
Offcourse,可以在$(),以包围被分配给一个变量。
这正是我想要的,比你! – mattman88
有没有办法,只需一个步骤做到这一点;但是,您可以先删除前缀,然后删除后缀。
array=("${array[@]##*/") # Remove the longest prefix matching */ from each element
array=("${array[@]%.*}") # Remove the shortest suffix match .* from each element
可能重复的[如何更改bash数组元素的值而不使用循环](http://stackoverflow.com/questions/12744031/how-to-change-values-of-bash-array-elements-without-loop ) – Wrikken