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