Nano Hash - криптовалюты, майнинг, программирование

Сценарий Bash не работает для бамбука на Mac, но для бамбука в Windows

Я клонирую репозиторий из Bamboo на компьютере с Windows, используя следующий код:

cd ${bamboo.build.working.directory}
IF EXIST devops (
    cd devops
    git pull
) ELSE (
    git clone https://myDevops:[email protected]/myInfo/devops
)

Это приведет к успешному клонированию репо, которое я пытаюсь получить. Но теперь я пытаюсь клонировать репозиторий на Mac, а не на машину с Windows. Я изменил Bash, чтобы он работал без ошибок:

cd ${bamboo.build.working.directory}
if [exist devops]; then 
    cd devops
    git pull
 else 
    git clone clone https://myDevops:[email protected]/myInfo/devops
fi

Но теперь я получаю это сообщение в журнале:

[exist: command not found 

В то время как на окнах это покажет это в журнале:

C:\bamboo-home\xml-data\build-dir\THE-BLD-KEY>IF EXIST devops (
cd devops  
     git pull 
)  ELSE (git clone https://myDevops:[email protected]/myInfo/devops)

Я не знаю, почему команда сообщения не найдена на Mac. Первоначально у меня были одинаковые фрагменты кода, но из-за синтаксических ошибок я изменил код Mac на то, что есть сейчас. Почему он не может получить команду?

29.11.2016

  • [ — это команда bash: пробел между [ и exist обязателен (при условии, что exist существует как команда). 29.11.2016

Ответы:


1

Ваш синтаксис действительно неверен. Вы можете использовать if [ -d devops ] ; then, но вы можете сделать лучше, чем в одной строке, используя код возврата cd (и проверяя, является ли devops каталогом и может ли он быть chd' в)

cd devops 2>/dev/null && git pull || git clone https://myDevops:[email protected]/myInfo/devops

Изменить: chepner предполагает, что в случае сбоя git pull он вызывает git clone, поэтому мой ответ в этом отношении несовершенен.

Предлагаемая замена однострочника по-прежнему будет использовать if:

if cd devops 2>/dev/null; then git pull; else git clone https://myDevops:[email protected]/myInfo/devops; fi
29.11.2016
  • Не используйте && ... || в качестве сокращения для правильной инструкции if. git clone запустится, если git pull выйдет из строя. 29.11.2016
  • @чепнер. Я плохо себя чувствую. Что вы предлагаете? 29.11.2016
  • отредактировано для корректности. Мне не нравится иметь принятый ответ с таким недостатком. Спасибо. 29.11.2016

  • 2

    человек баш:

    -d файл Истинно, если файл существует и является каталогом.

    Итак, вы должны использовать: [ -d devops ]

    29.11.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..