Экспортируйте функцию из bash и запускайте ее через командную строку - PullRequest
0 голосов
/ 26 мая 2019

У меня есть скрипт bash в файле server.sh

#!/usr/bin/env bash

function start {
    docker-compose up -d --build && docker exec php bash -c "composer install; vendor/bin/phinx migrate" && \
    docker exec web bash -c "cd web; npm install; pm2 start node_modules/react-scripts/scripts/start.js --name web"
}

function stop {
    docker-compose down
}

export -f start stop

Я хочу вызвать эти функции из командной строки, такие как

$./server.sh start
$./server.sh stop

Возможно ли это? Прямо сейчас это ничего не делает

Ответы [ 2 ]

2 голосов
/ 26 мая 2019

Ваш скрипт игнорирует аргументы командной строки, поэтому передавать его start или stop бессмысленно.

Единственное, что он делает, - это определяет (и экспортирует, по некоторым причинам) две функции, поэтомузапуск его в отдельной оболочке ничего не делает.

Что вы можете сделать, это установить скрипт в текущей оболочке:

. ./server.sh

Тогда у вас будет две функции, которые вы сможете запустить:

start

и

stop

(оба в текущей оболочке).

Если вы хотите, чтобы он работал по-другому, вам придется переделать сценарий оболочки.

1 голос
/ 26 мая 2019

Вы не можете использовать export -f start stop, как это.

Вот хорошая ветка, объясняющая, как ее использовать:

https://unix.stackexchange.com/questions/22796/can-i-export-functions-in-bash

Если вы хотите вызвать свой метод start / stop из командной строки, вам придется выставить его следующим образом:

#!/usr/bin/env bash

function start {
    docker-compose up -d --build && docker exec php bash -c "composer install; vendor/bin/phinx migrate" && \
    docker exec web bash -c "cd web; npm install; pm2 start node_modules/react-scripts/scripts/start.js --name web"
}

function stop {
    docker-compose down
}

if [[ "$1" == "start" ]]; then
  start
fi    

# [... same idea for the stop one ...]

А потом назовите это как $ ./server.sh start

Это пример, поскольку есть более эффективные способы управления аргументами.

Надеюсь, это даст вам некоторые идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...