【问题标题】:How to capture final output of an interactive python script within a bash script?如何在 bash 脚本中捕获交互式 python 脚本的最终输出?
【发布时间】:2020-11-14 21:37:04
【问题描述】:

我用Typerclient 为http server 创建了一个命令行界面。

这将启动一个交互式登录,显示用户名和密码提示。如果有效,它将授权令牌回显到标准输出。

$ snappy login
Username:
Password:

如何捕获 shell 脚本中的最后一个输出?我尝试了一个基本的子shell:

token=$(snappy login)

但随后token 捕获Username: Password: <authorization token>,并且没有文本显示到标准输出。

我目前的选择:

script -qc 'snappy login'
token=$(tail -1 typescript)
rm typescript

删除了底部的 13 行,因为它们只包含标记字符:

$ snappy login 2>&1 | hexdump -C
myemail@mail.com
00000000  55 73 65 72 6e 61 6d 65  3a 20 50 61 73 73 77 6f  |Username: Passwo|

00000010  72 64 3a 20 65 79 4a 30  65 58 41 69 4f 69 4a 4b  |rd: eyJ0eXAiOiJK|

【问题讨论】:

  • 请将snappy login 2>&1 | hexdump -C 的输出添加到您的问题中(无评论)。

标签: bash shell variable-assignment python-interactive


【解决方案1】:

试试

token=$(snappy login | cut -d':' -f3)

cut -d':' -f3 : 作为分隔符并打印第三个字段

【讨论】:

  • 可能输出有前导空格。
  • 我建议将cut -d':' -f3 替换为awk -F ': ' '{print $3}' 以使用: 作为字段分隔符。
  • 谢谢,这可以获取令牌,但是子shell没有显示提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多