如何将python脚本的输出重定向到bash变量?

2024-05-14 19:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

当重定向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生成的输出时,这似乎是某种回车


Tags: 对象echo脚本内容stringversionline重定向
3条回答

我无法复制你的结果,所以我试着寻找是什么导致了你的错误

>> "This is a test

然后我也犯了同样的错误

看来你的错误是结尾有未关闭的报价

查看here了解更多信息

所以你可能忘了在结尾的某个地方关闭一个打开的报价。 下面是我可能发生的事情

VERSION=$(python3 -c "print('nice dude')") 
python3 -c "print('$VERSION)"
  File "<string>", line 1
    print('nice dude)
                    ^
SyntaxError: EOL while scanning string literal

之后

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

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

print('nice dude
') 

这是无效的

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

我添加了python命令并用echo对其进行了包装,效果很好:

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

相关问题 更多 >

    热门问题