Bash: наиболее эффективный способ запуска команды (где команда «может» или «может не существовать» существовала до этого) - PullRequest
1 голос
/ 07 января 2020

Возьмите пример pip

Мы можем сделать

1) Предположим, что есть команда и запустить pip install somepackage. Сбой, если он дает выход 1

pip install somepackage || exit 1

2) Попытка установить пункт

wget <path online to pip>;   pip install somepackage

3) Проверить пункт существует

pip --version || wget <path online to pip> &&   pip install somepackage

Есть ли лучший способ чем любой из них, чтобы проверить существование с наименьшим использованием ресурса

Ответы [ 2 ]

2 голосов
/ 07 января 2020

Ваш сценарий Python не имеет кода, подобного

try:
    import requests
except ImportError:
    import subprocess
    subprocess.call(["pip", "install", "requests"])

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

Тот же лог c применяется к вашему скрипту оболочки. Это не ваша задача - установить pip, если он отсутствует; тот, кто запускает скрипт, должен убедиться, что pip установлен, прежде чем запускать скрипт. Если вы что-то делаете, просто отметьте, что pip не найдено.

if ! command -v pip > /dev/null; then
    printf 'pip not found; check your PATH or install pip before continuing\n' >&2
    exit 1
fi

pip install some package
0 голосов
/ 07 января 2020
if ! type pip;
then
  wget ...
  pip install whatever
fi

type - это встроенная оболочка, которая возвращает true, если команда может быть найдена, и false в противном случае.

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