而对于有限数量的参数,可以明确地做类似的事情
wrapped_function "${1#prefix}" "${2#prefix}" "${3#prefix}" # etc.,
Run Code Online (Sandbox Code Playgroud)
没有更简单的方法可以同时操作所有参数吗?
当然有,
wrapped_function "${@#prefix}"
Run Code Online (Sandbox Code Playgroud)
该$@代表的收集所有参数$1,$2......(见这里)在个别报价,即基本
$@="\"$1\" \"$2\" \"$3\" ..."
Run Code Online (Sandbox Code Playgroud)
然而,bash 对每个参数单独应用变量操作,即
${@#prefix}="\"${1#prefix}\" \"${2#prefix}\" ..."
Run Code Online (Sandbox Code Playgroud)
该${VAR#prefix}语法手段,如果$VAR与启动prefix,将其删除,如
TEST="/tmp/var/bin"; echo ${TEST#/tmp} # yields "/var/bin"
Run Code Online (Sandbox Code Playgroud)
同样,可以使用%代替#来删除后缀。