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 のソリューションは 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 までをハードコードする必要がなくなります。