У меня проблема с передачей параметров во внешний файл сценария bash из псевдонимов git. В настоящее время мой файл сценария bash находится в том же каталоге, что и мой .gitconfig. Я планирую переместить туда все мои complex !f() { }
псевдонимы, чтобы избежать борьбы со всеми побегами и без комментариев.
Итак, мой файл сценария называется .gitconfig.kat.aliases.script и выглядит примерно так:
#!/bin/bash
openInBrowser() {
REPO_URL=$(git config remote.origin.url)
find="git@bitbucket.org:"
replace="https://bitbucket.org/"
# Replace SSH with HTTPS prefix
REPO_URL=$(echo $REPO_URL | sed -e "s%${find}%${replace}%g")
explorer $REPO_URL
exit 0;
}
checkoutRemoteBranch() {
echo "$# Parameters"
echo $0
echo $1
echo $2
if [ "$#" = 2 ]
then
echo -e "BINGO"
# git fetch
# git co -b $2 $1/$2
else
echo -e "usage:\tgit co-rb <origin> <branch>"
fi
}
Конфигурация 1
В моем разделе .gitconfig [alias] у меня есть это:
co-rb = !bash -c 'source $HOME/.gitconfig.kat.aliases.script && checkoutRemoteBranch \"$@\"'
open = !bash -c 'source $HOME/.gitconfig.kat.aliases.script && openInBrowser'
Я следовал синтаксис этого вопроса для псевдонимов к внешнему сценарию / функции. Затем я следовал синтаксису этого вопроса для передачи параметров в функцию (выше псевдоним не передает фиктивный параметр, как предложенный вопрос, подробнее ниже).
Проблема в том, что без фиктивного параметра, когда я выполняю git co-rb origin feature/test
, я получаю следующий вывод:
1 Parameters
origin
feature/test
Конфигурация 2
Если я определю фиктивный параметр после $ @ ...
co-rb = !bash -c 'source $HOME/.gitconfig.kat.aliases.script && checkoutRemoteBranch \"$@\" x'
Вывод:
2 Parameters
origin
feature/test
x
Конфигурация 3
Если я изменю положение фиктивного параметра на co-rb = !bash -c 'source $HOME/.gitconfig.kat.aliases.script && checkoutRemoteBranch x \"$@\"'
Вывод:
2 Parameters
origin
x
feature/test
Вопросы:
1. Конфигурация 1 - неправильный счетчик параметров, а позиционные параметры смещены на -1.
1. Конфигурация 2 - счетчик параметров правильный, но позиционные параметры смещены на -1.
1. Конфигурация 3 - счетчик параметров правильный, но все параметры перепутаны. x
вводится посередине, и позиции не корректны для $ 1.
Как мне настроить псевдоним git, чтобы количество параметров было правильным, а позиции 1..N - это то, что я ожидал? Или я должен изменить свой сценарий оболочки так, чтобы каждый раз, когда я проверял количество параметров, я проверял счет 'count-1'?