Рейтинг:0

bash: строка 146: [: отсутствует `] — Gitlab CI/CD

флаг cn

ребята, поэтому я пытаюсь сделать это выражение if внутри скриптовой части моего CI / CD, но это дает bash: строка 146: [: отсутствует ]`ошибка, я не уверен, почему это происходит.

Мой скрипт в CI/CD:

сценарий:
        ->
            если [$CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^v/]; тогда 
                sshpass -e ssh -o StrictHostKeyChecking=no $DOCKER_SSH_USERNAME@$DOCKER_MACHINE "cd /home/$DOCKER_SSH_USERNAME && git clone $GIT_CLONE_URL && cd qcast-vosk-stt/ && chmod +x deploy.sh && ./deploy.sh -i $ ЭКЗЕМПЛЯРЫ -Е ПРОИЗВОДСТВО";
                эхо «Внутри»;
            еще 
                sshpass -e ssh -o StrictHostKeyChecking=no $DOCKER_SSH_USERNAME@$DOCKER_MACHINE "cd /home/$DOCKER_SSH_USERNAME && git clone $GIT_CLONE_URL && cd qcast-vosk-stt/ && chmod +x deploy.sh && ./deploy.sh -i $ ЭКЗЕМПЛЯРЫ -e РАЗРАБОТКА"; 
                эхо «Эльсед»;
            фи

Ошибка конвейера:

$ if [$CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^v/]; затем # свернутая многострочная команда
/usr/bin/bash: строка 146: [: отсутствует `]'
Lorenz Keel avatar
флаг gr
должно быть `if [условие1] && [условие2]; затем команда1; иначе команда2; фи`. Таким образом, вы должны поставить `]` перед `&&`, а также поставить непротиворечивую проверку переменной `$CI_COMMIT_TAG`
bac0n avatar
флаг cn
это не то, что не так, одиночный `[ ]` не поддерживает бинарный оператор `=~`. Вы должны использовать `[[ ]]`, совершенно нормально использовать `[[ $a && $b =~ pattern ]]` и `/ /` следует удалить, если они не являются частью шаблона
DeadSec avatar
флаг cn
@bac0n это сработало :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.