【问题标题】:Making bash file to display to terminal制作 bash 文件以显示到终端
【发布时间】:2020-11-26 02:22:46
【问题描述】:

我遇到了获取问题

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

当我将它放入 .sh 并尝试 bash 运行它时,在终端上显示任何内容。当我直接在终端中运行该命令时它可以工作。无论如何我可以解决这个问题吗?

运行 bash -x startup.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

【问题讨论】:

  • 这在脚本中应该是一样的。出了什么问题?
  • 嘿 Barmar,尝试从脚本运行它不会在终端中显示任何内容。这是由于“source ./venv/bin/activate”行阻止它在终端中显示任何内容,我该如何避免这个问题?谢谢
  • 不要将代码放入 cmets,编辑问题。
  • 可能问题与venv有关。
  • 很可能是这样。不过不知道怎么解决

标签: python linux bash tail python-venv


【解决方案1】:

试试这个:

 #!/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}')

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2020-05-08
    • 1970-01-01
    相关资源
    最近更新 更多