У меня есть следующая функция git alias, которая перемещает файлы в каталог с помощью git mv этих файлов, а затем выполняет git commit :
[alias]
mv-into-dir = "!mvIntoDIR() { \
cd ${GIT_PREFIX:-.}; \
allArgsButLast=\"${@:1:$#-1}\"; \
lastArg=\"${@: -1}\"; \
git mv -v $allArgsButLast $lastArg/; \
git commit -uno $allArgsButLast $lastArg -m \"Moved $allArgsButLast into $lastArg/\"; \
}; mvIntoDIR"
Кажется, все в порядке:
$ git config alias.mv-into-dir
!mvIntoDIR() { cd ${GIT_PREFIX:-.}; allArgsButLast="${@:1:$#-1}"; lastArg="${@: -1}"; git mv -v $allArgsButLast $lastArg/; git commit -uno $allArgsButLast $lastArg -m "Moved $allArgsButLast into $lastArg/"; }; mvIntoDIR
$
Но когда я запускаю его, я получаю ошибку 1: Неверная замена:
$ git mv-into-dir .conkyrc.back tmp
mvIntoDIR() { cd ${GIT_PREFIX:-.}; allArgsButLast="${@:1:$#-1}"; lastArg="${@: -1}"; git mv -v $allArgsButLast $lastArg/; git commit -uno $allArgsButLast $lastArg -m "Moved $allArgsButLast into $lastArg/"; }; mvIntoDIR: 1: Bad substitution
$
Подробнее здесь: https://stackoverflow.com/questions/798 ... bstitution