Используйте поддиапазон всех аргументов в функции Bash
У меня есть эта функция в скрипте Bash:
comp() {
rsync -v --archive $1/ $TMP/$2 $3 $4 $5 $6 $7 $8 $9
}
Как видите, я делаю что-то особенное с аргументами $1
а также $2
, Затем я просто добавляю все остальные из них в конец команды. Они идут в $9
, но на самом деле все должно быть добавлено.
Должен быть более простой способ для этого?
2 ответа
Вы можете использовать расширение подстроки, которое может быть полезно в определенных ситуациях. Для этого, однако, я должен сказать, что предпочитаю решение Брайана о смещении, так как оно немного яснее. (Также решение Брайана - 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 долларов.