首页 > 解决方案 > 如何将python脚本的输出重定向到bash变量?

问题描述

当重定向python脚本的输出时,在回显输出时它似乎可以工作,但是当我实际将它与另一个对象一起使用时,它会中断并切断它之后的所有内容。

在这种情况下,我们VERSION设置为"nice dude"

VERSION=$(python3 -c "print('nice dude')")

单独打印变量似乎有效

$ echo $VERSION

>>> nice dude

但是当我用其他任何东西实现这个值时,例如 Python:

$ python3 -c "print('$VERSION')"

>>>   File "<string>", line 1
>>>     print('nice dude
>>>                     ^
>>> SyntaxError: EOL while scanning string literal

或者当我用一些连接再次打印它时:

$ echo $VERSION hehe

>>>  hehedude

我不确定发生了什么,但在打印由 python 生成的输出时,它似乎是某种回车python3.9.1

标签: pythonbash

解决方案


VERSION=$(python3 -c "print('nice dude')")

VERSION shell 变量将包含一个尾随换行符,因此将其插入 Python 代码python3 -c "print('$VERSION')"将导致

print('nice dude
') 

这不是有效的 Python。

您可以添加, end="")到原始打印或找出其他方法来去除尾随换行符,或使用例如三引号。


推荐阅读