3

我在 Bash 脚本中有这个函数:

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

如您所见,我正在使用参数$1$2. 然后我只是将所有其余部分附加到命令的末尾。它们转到$9,但实际上应该附加所有内容。

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

4

2 回答 2

5

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

comp () {

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

}
于 2012-08-30T14:17:16.633 回答
4

我不一定会称之为“更容易”,但你可以这样做:

comp() {
    archive=$1
    tempfile=$2
    shift 2
    rsync -v --archive $archive/ $TMP/$tempfile "$@"
}

这使您不必对 3 美元到 11 美元进行硬编码。

于 2012-08-30T13:58:01.903 回答