Запуск многострочной команды bash из windows - PullRequest
0 голосов
/ 22 октября 2018

Я хочу выполнить следующую команду (взято из здесь ), которая выглядит следующим образом:

git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 |
while read ref
do
  git tag "$ref" "refs/heads/tags/$ref";
  git branch -D "tags/$ref";
done

Я должен запустить это из командной строки Windows, но не уверен, какпередать его, используя несколько строк.Я попытался передать все это одной командой, например:

bash -c "git for-each-ref ... while read ref.... done

с использованием нескольких параметров:

bash -c "git for-for-each..." "cut -d..." "while read ref"

Как я могу передатьнесколько строк bash?

Спасибо

1 Ответ

0 голосов
/ 22 октября 2018

Самое простое, что нужно сделать (не входя в роль каждой новой строки при разборе этой команды), это просто передать символы новой строки как часть аргумента:

bash -c 'git for-each-ref --format="%(refname)" refs/heads/tags |
  cut -d / -f 4 |
  while read ref
  do
    git tag "$ref" "refs/heads/tags/$ref";
    git branch -D "tags/$ref";
  done
'

Тем не менее, единственное "важное"символ новой строки предшествует ключевому слову do, и его также можно заменить точкой с запятой.

bash -c 'git for-each-ref --format="%(refname)" refs/heads/tags | cut -d / -f 4 | while read ref; do git tag "$ref" "refs/heads/tags/$ref"; git branch -D "tags/$ref"; done'

(прокрутите, чтобы увидеть всю команду. Обратите внимание, что исходные две точки с запятой были необязательными в мульти-линейная версия, но требуется в однострочной версии для завершения каждой команды в теле цикла.)

Однако только новый цикл должен выполняться новым экземпляром bash;Вы также можете написать что-то вроде

git for-each-ref --format="%(refname)" refs/heads/tags |
  cut -d / -f 4 |
  bash -c 'while read ref
           do
             git tag "$ref" "refs/heads/tags/$ref";
             git branch -D "tags/$ref";
           done
           '
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...