我在 Bash 脚本中有这个函数:
comp() {
rsync -v --archive $1/ $TMP/$2 $3 $4 $5 $6 $7 $8 $9
}
如您所见,我正在使用参数$1
和$2
. 然后我只是将所有其余部分附加到命令的末尾。它们转到$9
,但实际上应该附加所有内容。
必须有一个更简单的方法吗?
我在 Bash 脚本中有这个函数:
comp() {
rsync -v --archive $1/ $TMP/$2 $3 $4 $5 $6 $7 $8 $9
}
如您所见,我正在使用参数$1
和$2
. 然后我只是将所有其余部分附加到命令的末尾。它们转到$9
,但实际上应该附加所有内容。
必须有一个更简单的方法吗?
您可以使用子字符串扩展,这在某些情况下可能很有用。不过,为此,我必须说我更喜欢 Brian 的移位解决方案,因为它更清晰一些。(另外,Brian 的解决方案是 POSIX;子字符串扩展是 bash 扩展。)
comp () {
rsync -v --archive "$1"/ "$TMP/$2" "${@:3}"
}
我不一定会称之为“更容易”,但你可以这样做:
comp() {
archive=$1
tempfile=$2
shift 2
rsync -v --archive $archive/ $TMP/$tempfile "$@"
}
这使您不必对 3 美元到 11 美元进行硬编码。