Создать сценарий оболочки из bat скрипт [закрыто]

Я пытаюсь сделать свою программу на Python совместимой с Linux и, честно говоря, понятия не имею, как написать сценарий оболочки. Я немного разбираюсь в пакетных сценариях, так как заставил это работать.

@echo off

chcp 65001 > NUL
cd /d "%~dp0"

if exist %SYSTEMROOT%\py.exe (
   cmd /k C:\Windows\py.exe -3.5 -m pip install --upgrade -r  Requirements.txt
    exit
)

python --version > NUL 2>&1
if %ERRORLEVEL% NEQ 0 goto nopython

cmd /k python -m pip install --upgrade -r requirements.txt
goto end

:nopython
echo ERROR: Git has either not been installed or not been added to your PATH

:end
pause

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

0
задан 13 March 2016 в 08:25

1 ответ

@echo off

Так как сценарии оболочки не повторяют команды по умолчанию, эквивалент является ненужным.


if exist %SYSTEMROOT%\py.exe (
   cmd /k C:\Windows\py.exe -3.5 -m pip install --upgrade -r  Requirements.txt
    exit
)

py средство запуска не используется в системах Linux. Вместо этого звоните pip3. Эквивалент установленного на системе pip3 (т.е. установленное использование диспетчера пакетов), был бы /usr/bin/pip3:

if [ -x /usr/bin/pip3 ]
then
    /usr/bin/pip3 install --upgrade -r  Requirements.txt
    exit
fi

Однако могло бы быть лучше использовать любого доступного pip3:

if command -v pip3 > /dev/null
then
    pip3 install --upgrade -r  Requirements.txt
    exit
fi

command -v может использоваться, чтобы проверить, находится ли программа в PATH (и это печатает путь к той программе, которая мы отбрасываем использование > /dev/null). Вы могли также проверить на python3 и выполненный python3 -m pip.


python --version > NUL 2>&1
if %ERRORLEVEL% NEQ 0 goto nopython

cmd /k python -m pip install --upgrade -r requirements.txt
goto end

:nopython
echo ERROR: Git has either not been installed or not been added to your PATH

:end
pause

Мы не имеем goto в сценариях оболочки.

Эквивалент был бы чем-то как:

python --version 2>&1 > /dev/null    # Note the order of redirections
if [ $? != 0 ]    # $? is like ERRORLEVEL
then
    echo ERROR: Git has either not been installed or not been added to your PATH
else
    python -m pip install --upgrade -r requirements.txt
fi

Который был бы более читаемым, IMO, как:

if python --version 2>&1 > /dev/null
then
    python -m pip install --upgrade -r requirements.txt
else
    echo ERROR: Git has either not been installed or not been added to your PATH
fi

Примечание стороны: Мерзавец не был установлен? O.o

0
ответ дан 29 September 2019 в 10:18

Другие вопросы по тегам:

Похожие вопросы: