Cria um script de shell a partir do script bat [fechado]

0

Estou tentando tornar meu programa python compatível com linux e honestamente não tenho idéia de como escrever um script de shell. Eu sei um pouco de script em lote desde que eu consegui isso funcionar.

@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

Alguém aí tem tempo para me ajudar a fazer isso funcionar como um script de shell para que ele possa ser executado no linux?

    
por Estrobeda 13.03.2016 / 00:56

1 resposta

0
@echo off

Como os scripts de shell não fazem eco aos comandos por padrão, um equivalente é desnecessário.

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

O py launcher não é usado em sistemas Linux. Em vez disso, chame pip3 . O equivalente do pip3 instalado pelo sistema (ou seja, instalado usando o gerenciador de pacotes) seria /usr/bin/pip3 :

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

No entanto, talvez seja melhor usar qualquer pip3 disponível:

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

command -v pode ser usado para verificar se um programa está no PATH (e imprime o caminho para esse programa, que descartamos usando > /dev/null ). Você também pode verificar por python3 e executar 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

Não temos goto em scripts de shell.

Um equivalente seria algo como:

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

O que seria mais legível, IMO, como:

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

Nota lateral: Git não foi instalado? O.o

    
por muru 13.03.2016 / 01:16