Я пытаюсь сделать свою программу на 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?
@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