@LexPex
PM Sysadm

Как задать переменную bash?

Имею скрипт для деплоя, задача в том что бы подставить значение например deploy.sh prod (prod задается в ENV).
Если не подставить значение то скрипт отрабатывает прописанный в нем HOST по умолчанию. Как это реализовать ?

#!/bin/bash

HOST=$PROD
DEST="/var/www/agr/data/www/wiki/public/"

tar -cvzf wiki.tar.gz build/

echo 'Archived'


echo 'Coping sourcee'

scp wiki.tar.gz ${HOST}:${DEST}

echo 'Copied'

echo 'Unziping'

ssh ${HOST} "tar -xvf ${DEST}/wiki.tar.gz -C ${DEST}&& rm ${DEST}/wiki.tar.gz && rm -r ${DEST}/wiki/ && mv ${DEST}/build ${DEST}/wiki"

echo 'unziped'

echo Done
  • Вопрос задан
  • 339 просмотров
Пригласить эксперта
Ответы на вопрос 3
xotkot
@xotkot
хорошо есть и хорошо весьма
скрипт(урезанный) deploy.sh
#!/usr/bin/env bash

_HOST="$1"
if [[ "$_HOST" == "" ]]; then
	_HOST="host2"
fi

echo "Используемый хост: $_HOST"


работа скрипта:
$ export prod="host1"
$ deploy.sh $prod
Используемый хост: host1

или напрямую:
$ deploy.sh "host1"
Используемый хост: host1

$ deploy.sh
Используемый хост: host2
Ответ написан
Комментировать
@ISE73
Что-то типа такого:
HOST=$PROD
if [[ "$HOSTx"="x" ]]
then
    HOST = "default host"
fi

или так:
HOST = $([ "$PRODx" == "x" ] && echo "default host" || echo "$PROD")
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Если вам нужно проверить переменную MYVAR, и если она пустая. то задать ей значение по умолчанию, можете просто проверить это например этими способами:

1.
if [[ -z MYVAR ]]; then
  MYVAR="default value"
fi


2.
echo "MYVAR is: ${MYVAR:="default value}"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы