3

Bashスクリプトにこの関数があります:

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

ご覧のとおり、引数$1とで何か特別なことをしています$2。次に、残りのすべてをコマンドの最後にハックして追加します。それらは に移動し$9ますが、実際にはすべて追加する必要があります。

これにはもっと簡単な方法があるはずですか?

4

2 に答える 2

5

部分文字列展開を使用できます。これは、特定の状況で役立つ場合があります。ただし、これについては、少し明確であるため、ブライアンのシフトのソリューションを好むと言わざるを得ません。(また、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 に答える