Создание файла bash для отображения на терминале - PullRequest
0 голосов
/ 05 августа 2020

У меня проблемы с получением

source ./venv/bin/activate
python3 run.py > console.log.txt 2>&1 & tail -f console.log.txt
deactivate

для отображения чего-либо на терминале, когда я вставляю его в. sh и пытаюсь bash запустить. Он работает, когда я запускаю эту команду напрямую в терминале. Есть ли способ исправить это?

работает bash -x запуск. sh отображает:

+ source ./venv/bin/activate
++ '[' ./venv/bin/activate = start.sh ']'
++ deactivate nondestructive
++ unset -f pydoc
++ '[' -z '' ']'
++ '[' -z '' ']'
++ '[' -n /usr/bin/bash ']'
++ hash -r
++ '[' -z '' ']'
++ unset VIRTUAL_ENV
++ '[' '!' nondestructive = nondestructive ']'
++ VIRTUAL_ENV=/mnt/c/Users/billc/Documents/Websites/donttouchyourface/backend/venv
++ export VIRTUAL_ENV
++ _OLD_VIRTUAL_PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/mnt/c/Python38/Scripts/:/mnt/c/Python38/:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/nodejs/:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Program Files/Java/jdk1.8.0_211/bin:/mnt/c/Program Files/Java/apache-maven-3.6.3/bin:/mnt/c/Program Files/Apache Software Foundation/Tomcat 9.0/bin:/mnt/c/tomcat:/mnt/c/Program Files/OpenJDK/openjdk-11.0.7_10:/mnt/c/Program Files/OpenJDK/openjdk-11.0.7_10/bin:/mnt/c/Program Files/PuTTY/:/mnt/c/Program Files (x86)/Calibre2/:/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/:/mnt/c/Program Files (x86)/Microsoft SQL Server/150/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/150/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/150/DTS/Binn/:/mnt/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn/:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/ProgramData/DockerDesktop/version-bin:/mnt/c/Program Files (x86)/Yarn/bin/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/Microsoft/Web Platform Installer/:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/MySQL/MySQL Shell 8.0/bin/:/mnt/c/Users/billc/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/billc/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/billc/AppData/Roaming/npm:/mnt/c/tools/mysql/current/bin:/mnt/c/tools/neovim/Neovim/bin:/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.1/bin:/mnt/c/Users/billc/AppData/Local/Yarn/bin:/mnt/c/Program Files/JetBrains/PyCharm Community Edition 2020.1.4/bin:/snap/bin'
++ PATH='/mnt/c/Users/billc/Documents/Websites/donttouchyourface/backend/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/mnt/c/Python38/Scripts/:/mnt/c/Python38/:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/nodejs/:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Program Files/Java/jdk1.8.0_211/bin:/mnt/c/Program Files/Java/apache-maven-3.6.3/bin:/mnt/c/Program Files/Apache Software Foundation/Tomcat 9.0/bin:/mnt/c/tomcat:/mnt/c/Program Files/OpenJDK/openjdk-11.0.7_10:/mnt/c/Program Files/OpenJDK/openjdk-11.0.7_10/bin:/mnt/c/Program Files/PuTTY/:/mnt/c/Program Files (x86)/Calibre2/:/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/:/mnt/c/Program Files (x86)/Microsoft SQL Server/150/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/150/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/150/DTS/Binn/:/mnt/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn/:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/ProgramData/DockerDesktop/version-bin:/mnt/c/Program Files (x86)/Yarn/bin/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/Microsoft/Web Platform Installer/:/mnt/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/mnt/c/Program Files/MySQL/MySQL Shell 8.0/bin/:/mnt/c/Users/billc/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/billc/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/billc/AppData/Roaming/npm:/mnt/c/tools/mysql/current/bin:/mnt/c/tools/neovim/Neovim/bin:/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2020.1.1/bin:/mnt/c/Users/billc/AppData/Local/Yarn/bin:/mnt/c/Program Files/JetBrains/PyCharm Community Edition 2020.1.4/bin:/snap/bin'
++ export PATH
++ '[' -z '' ']'
++ '[' -z '' ']'
++ _OLD_VIRTUAL_PS1=
++ '[' x '!=' x ']'
+++ basename /mnt/c/Users/billc/Documents/Websites/donttouchyourface/backend/venv
++ PS1='(venv) '
++ export PS1
++ alias pydoc
++ true
++ '[' -n /usr/bin/bash ']'
++ hash -r
+ tail -f console.log.txt
+ python3 run.py

1 Ответ

0 голосов
/ 06 августа 2020

Попробуйте следующее:

 #!/bin/bash

pwd
echo
cd ~/<your_folder_where_venv_folder_is_present>; source venvPython375/bin/activate
echo "-- Inside Virtual ENV dir: `pwd`"
python3 run.py > console.log.111.txt 2>&1 &  timeout 5 tail -f  console.log.111.txt
echo "-- Deactivating from Venv"
deactivate
echo

Поскольку вы не говорите tail, когда остановиться, он будет продолжать ждать вашего ввода пользователя и никогда не вернется назад. Использование timeout 5 или любого числа может помочь.

Мой пример run.py был:

#!/bin/python

import os
for k, v in os.environ.items():
    print(f'{k}={v}')
...