Отправка строк в качестве параметра в bash-скрипт для автоматизации команд Git с использованием Git Alias - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть скрипт bash, который я использовал некоторое время, чтобы автоматизировать следующие команды Git в одну команду для простоты использования:

git add.
git commit -m
git push

Сценарий определен в.gitconfig файл как псевдоним.Пока это работает очень хорошо, но я хотел бы иметь возможность добавить некоторые дополнительные функции, чтобы я мог передавать две строки вместо одной.Первая строка будет номером билета JIRA, а вторая - сообщением фиксации.Номер тикера будет добавлен к сообщению фиксации до того, как коммит будет передан на удаленный сервер.

Я попытался изменить свой скрипт, но теперь, когда я ввожу три параметра, я получаю ошибку too many arguments.Хотя я не уверен, что делаю не так.

!f() 
{ 
    ticketNumber=$1 
    commitmessage=$2
    confirm=$3; 

    if [ $2 = 1 ]; 
    then 
    git add .; 
    git status; 
    git commit -m \"[${ticketNumber}] ${commitmessage}\"; 
    git push; fi 
    }; 
f

Например, следующий вызов функции выдает ошибку:

git commitpushthis "JIRA-137" "Test commit message" 1

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Проблема в том, что $2 не заключен в кавычки, что означает, что в итоге вы получите команду типа

[ Test commit message = 1 ]

Цитата $2 исправит это, хотя только достаточно долго, чтобы вы поняли, что хотите использовать$3 в любом случае.Правильное определение будет выглядеть так (имена переменных для краткости опущены):

commitpushthis = "!f() { if [ \"$3\" = 1 ]; then git add .; git status; git commit -m \"[${ticketNumber}] ${commitmessage}\"; git push; fi; }; f"
0 голосов
/ 04 апреля 2019

Мне удалось решить проблему.Очевидно, это было вызвано неправильным `if [$ 2 = 1], как указал другой пользователь.

Новый код, показанный ниже, работает как задумано.

!f() 
{ 
    ticketNumber=$1 
    commitmessage=$2
    confirm=$3; 

    if [ $3 = 1 ]; 
    then 
    git add .; 
    git status; 
    git commit -m \"[${ticketNumber}] ${commitmessage}\"; 
    git push; fi 
    }; 
f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...