虽然对于有限数量的参数,我们可以明确地执行类似的操作
wrapped_function "${1#prefix}" "${2#prefix}" "${3#prefix}" # etc.,
有没有更简单的方法来操纵全部一次参数?
答案1
当然有,
wrapped_function "${@#prefix}"
代表$@
集合全部参数$1
, $2
, ...(参见这里)在单独的引号中,即基本上
$@="\"$1\" \"$2\" \"$3\" ..."
然而,bash 单独应用变量操作每个参数,即
${@#prefix}="\"${1#prefix}\" \"${2#prefix}\" ..."
语法${VAR#prefix}
意味着如果$VAR
以 开头prefix
,则将其删除,例如
TEST="/tmp/var/bin"; echo ${TEST#/tmp} # yields "/var/bin"
类似地,可以使用%
代替来#
删除后缀。