在Bash函数中使用所有参数的子范围

Bar*_*lom 3 bash bash-function

我在Bash脚本中有这个功能:

comp() {
    rsync -v --archive $1/ $TMP/$2 $3 $4 $5 $6 $7 $8 $9
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在做一些特殊的论点$1$2.然后我匆匆将其余的所有其余部分追加到命令的末尾.他们去了$9,但事实上所有都应该附加.

必须有一个更简单的方法吗?

che*_*ner 5

您可以使用子字符串扩展,这在某些情况下可能很有用.尽管如此,我必须说我更喜欢Brian的移位解决方案,因为它更清晰一点.(另外,Brian的解决方案是POSIX;子串扩展是一个bash扩展.)

comp () {

    rsync -v --archive "$1"/ "$TMP/$2" "${@:3}"

}
Run Code Online (Sandbox Code Playgroud)