如何一次操作shell脚本的所有参数?

如何一次操作shell脚本的所有参数?

虽然对于有限数量的参数,我们可以明确地执行类似的操作

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"

类似地,可以使用%代替来#删除后缀。

相关内容