如何使用 python send cmd 保持 bash 数组有效 [重复]

Posted

技术标签:

【中文标题】如何使用 python send cmd 保持 bash 数组有效 [重复]【英文标题】:How to keep bash array valid with python send cmd [duplicate] 【发布时间】:2021-10-08 09:51:20 【问题描述】:

我在 bash 脚本中有一个数组。该脚本通过 python send 命令执行,并在执行脚本的数组行时,

它返回 -

Syntax error: "(" unexpected

由于这行代码-

pci_addr_0=`lspci | grep -i abcde | grep -i "\.0 " | awk -F " " 'print $1'`

pci_addr_list_0=(`echo $pci_addr_0 | tr " " "\n"`)

我尝试了斜杠和双引号,但数组没有按预期分配值。

如何避免 python 使 bash 数组大括号失效?

【问题讨论】:

你能告诉我们整个函数或整个代码吗?我有一种感觉,您正在将 Python 和 Bash 代码混合在一个脚本中。 @RV5:从 bash 方面来看,分配看起来不错。难道这不是由bash执行的吗?在给出错误的行之前执行echo $BASH_VERSION。此外,显示启动整个内容的 Python 命令。 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。 显示你的 Python 代码。您不能直接在Python 中使用bash 代码。您需要使用os.system("bash code")subprocess.run("bash code", shell=True)。你用pexcept吗?显示有问题。 @furas,在这两种情况下都是sh 代码,而不是bash 代码。 shell=Trueos.system() 都使用/bin/sh,这不是bash(或者,如果是bash,则以兼容模式运行,关闭一些功能和语法) 【参考方案1】:

谢谢大家!

我使用 python 期望调用另一个 bash 脚本,没有混合。

通过在 bash 脚本中显式添加 #!/bin/bash 来解决此问题。在那之前,大多数命令都在该 bash 脚本中运行,并且没有注意到这可能是一个潜在问题。

@user1934428 好主意,我会检查一下。

【讨论】:

请注意,新代码不是很好的形式——array=( $(yourcommand) ) 是反模式;见BashPitfalls #50。 BashFAQ #1 中给出了逐行迭代输入的最佳实践,但在 bash 4.0 或更高版本中读取数组时可以使用 readarray -t array < <(yourcommand)

以上是关于如何使用 python send cmd 保持 bash 数组有效 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有终端(保持打开状态)的情况下运行 .bat 文件?

Python网络之黏包

Python学习之十yield之send方法

打开.bat文件脚本后如何保持cmd运行

目前在用selenium python做自动化测试,使用IE时Send_keys()写入时几秒钟蹦一个字符,请问如何加快速度呢

Python生成器next方法和send方法区别