OSX Snow Leopard 上的 Bash 脚本,我想删除一组文件后缀中的任何一个,但我的 googlefu 失败了。
给定
file="filename_1"
file1=${file%_1}
echo $file1
filename
但是,将模式列表引入剥离的任何变化都让我失败,例如:
shopt -s extglob
file1=${file/@(%_1|%_end)/}
echo $file1
filename_1
我尝试将模式列表放入变量中,使用括号或不使用,使用引号或不使用。 我得出的结论是,尾随字符串的替换和修剪不采用模式列表 - 或者我遗漏了一些相当明显的东西。感谢您对优雅的解决方案或我可能缺少的模式列表的建议。
最佳答案
您只是语法有点错误:${file%@(_1|_end)}
$ printf "%s\n" filename_1 filename_2 filename_end |
while read file; do echo ${file%@(_1|_end)}; done
filename
filename_2
filename
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
关于 bash ;删除一组后缀中的任何一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9888133/