Git не распознает аргументы, отправленные Bash - PullRequest
0 голосов
/ 17 апреля 2019

bash снова отправляет меня через край.

Это:

echo $desc $commit_string

Печатает это:

description "tmux split-window subcommand.md"

Но это, запустить из скрипта (илидаже из командной строки):

git commit -m "$desc" "$commit_string"

Результат такой:

error: pathspec '"tmux split-window subcommand.md"' did not match any file(s) known to git

Но, запустить из каталога, в котором находится файл, работает нормально:

git commit -m 'description' "tmux split-window subcommand.md"

Я потратил на это хотя бы час и попробовал все под солнцем.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2019

В git commit -m "$desc" "$commit_string" из-за пробела между "$desc" и "$commit_string", "$commit_string" интерпретируется как параметр пути.

Попробуйте

git commit -m "$desc"\ "$commit_string"

или

git commit -m "$desc $commit_string"

Имя параметра $commit_string предполагает, что это сообщение фиксации. Но после прочтения ваших комментариев я обнаружил, что он также включает пути измененных файлов.

Так что, если tmux split-window принадлежит сообщению, а subcommand.md относится к пути, вам нужно разделить их. Составьте tmux split-window с -m и оставьте subcommand.md в покое.

Если tmux split-window subcommand.md все принадлежит путям, попробуйте:

git commit -m "$desc" -- "$commit_string"
0 голосов
/ 17 апреля 2019

Удаление кавычек из имени файла сделало трюк:

commit_string=${commit_string//\"}
git commit -m "$desc" "$commit_string"

Исходя из мира Perl, меня явно безнадежно смущает то, как bash отображает и обрабатывает цитирование строк.

0 голосов
/ 17 апреля 2019

Я считаю, 'tmux split-window subcommand.md' - это имя файла, который вы хотите зафиксировать. Если эта переменная уже содержит кавычки, то, очевидно, она есть, тогда вы можете использовать

git commit -m "$desc" $commit_string

Обновление: Как определяется эта переменная, commit_string? Вы сами ставили эти цитаты? Вы сказали echo $desc $commit_string печатает description "tmux split-window subcommand.md". Может быть, вы должны объявить его как commit_string="tmux split-window subcommand.md", а затем использовать git -m "$desc" "$commit_string".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...