Что по этому поводу вызывает синтаксическую ошибку?('возле &&') - PullRequest
0 голосов
/ 10 июля 2019

Набор команд, заключенных в строку с & &&, не работает при наличии псевдонима, работает при непосредственном вводе.

У меня есть набор из одиннадцати команд для инициализации Git, создания нового репозитория, создания некоторых файлов конфигурации и создания нескольких веток.

Я для удобства объединил их в одну команду, заштрихованную && s. Эта команда работает при вставке напрямую. Не удается, когда я запускаю псевдоним версии.

Я отредактировал файл ~/.bashrc в следующем коде:


alias repo='git init && hub create && echo "/node_modules" >.gitignore && tsc --init && git add -A && git commit -S -m "First commit" && git push -u origin master && git checkout -b dev && git push origin head && git checkout -b new_feature && git push origin head'

Я пытался переместить его в его собственную функцию:

createRepo () {
  git init 
  && hub create 
  && echo "/node_modules" >.gitignore 
  && tsc --init 
  && git add -A 
  && git commit -S -m "First commit"  
  && git push -u origin master  
  && git checkout -b dev 
  && git push origin head 
  && git checkout -b new_feature 
  && git push origin head
}

alias repo="createRepo"

И это дает точно такой же результат.

Для ясности, вставка git init && hub create && echo "/node_modules" >.gitignore && tsc --init && git add -A && git commit -S -m "First commit" && git push -u origin master && git checkout -b dev && git push origin head && git checkout -b new_feature && git push origin head напрямую заставляет его работать как функционирует.

Только когда я пытаюсь присвоить ему псевдоним, я получаю синтаксическую ошибку.

Я использую нано

Я ожидаю repo в Bash это:

  1. Инициализация git-репо
  2. Создание репозитория GitHub
  3. Добавить, зафиксировать и передать основную ветку
  4. Создание, извлечение и отправка ветки разработчика и новых функций

Фактический: bash: syntax error near &&

Ответы [ 2 ]

3 голосов
/ 10 июля 2019

bash не знает, что команда продолжается до следующей строки, если:

  • вы не используете продолжение строки

    createRepo () {
      git init \
      && hub create \
      && echo "/node_modules" >.gitignore \
      && ...
    
  • вы ставите && в конце строки

    createRepo () {
      git init &&
      hub create &&
      echo "/node_modules" >.gitignore &&
      ...
    
0 голосов
/ 10 июля 2019

Bash загружает файл ~/.bashrc один раз при запуске, поэтому мне пришлось полностью перезапустить Bash.

Мой псевдоним repo сработал после этого.

...