我有一個帶有擴展名的檔案:
f1=f1.e1.e2.e3.sh.pl.cpp
我有一個包含擴展列表的陣列:
exts=(sh pl py)
我想從檔案名稱中刪除 exts 中的副檔名。有沒有辦法做到這一點,我正在考慮這樣的事情:
${f1%.${exts[@]}}
顯然這是行不通的。
答案1
我將從您的exts
陣列建構一個模式,然後使用sed
:
f1=f1.e1.e2.e3.sh.pl.cpp
exts=(sh pl py)
function array_to_regex_alts() { # joins the array elements by \|
echo -n "$1"; shift; printf "\|%s" "$@"
}
pattern="\.\($(array_to_regex_alts ${exts[@]} )\)"
echo $f1 | sed "s/$pattern//g"