Лучший способ запустить сценарий через сценарий оболочки / bin / bash в нескольких средах? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть скрипт Python, который я запускаю на локальном хосте и разработку в командной строке с аргументом, sth как python script.py development - на разработке и python script.py localhost - на локальном хосте.

Теперь я хочу запустить этот скрипт- когда я запускаю скрипт /bin/bash sh, поэтому я хочу запустить этот скрипт из скрипта /bin/.bash.Я добавил в заголовки сценария sh: #!/usr/bin/env python.

Каким образом я могу этого достичь?

do
    if [ $1 == "local" ]; then
      python script.py $1

    elif [ $1 == "development" ]; then
      python script.py $1

Что я могу сделать, чтобы улучшить этот скрипт?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Поскольку $1 уже содержит то, что вы хотите, условное выражение не требуется.

Если ваш сценарий является сценарием Bash, вы должны поместить #!/bin/bash (или ваш локальный эквивалент) в строку shebang.Тем не менее, этот конкретный сценарий не использует функции Bash и поэтому может быть полезен для кодирования для запуска POSIX sh.

#!/bin/sh

case $1 in
  local|development) ;;
  *) echo "Syntax: $0 local|development" >&2; exit 2;;
esac

exec python script.py "$1"

Более полезный подход заключается в настройке локальной системы для запуска сценария напрямую с помощью ./script.py или аналогичный, и пусть сам скрипт позаботится о разборе аргументов командной строки.Как именно это сделать, зависит от вашей конкретной среды, но в большинстве U * x-подобных систем вы бы поместили #!/usr/bin/env python в качестве первой строки самого script.py и chmod +x файла.

0 голосов
/ 15 февраля 2019

Полагаю, это то, что вы хотели ...

#!/bin/bash

if [ ! "$@" ]; then
  echo "Usage: $1 (local|development) "
  exit
fi

if [ "$1" == "local" ]; then
    python script.py "$1"
    echo "$1"
elif
    [ "$1" == "development" ]; then
    python script.py "$1"
    echo "$1"
fi

Сохраните приведенный выше код bash в файл, скажем, скажем script.sh.Сделать это исполняемым: chmod +x script.sh.Затем запустите его:

./script.sh

Если аргумент не указан, скрипт просто выведет информацию о том, как его использовать.

./script.sh local - выполняет python script.py local

./script.sh development - выполняет разработку python script.py

Вы можете комментировать строки с помощью echo, они были оставлены там только для целей отладки (добавьте # передэхо строк, чтобы прокомментировать их).

...