如何使用 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=True
和os.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 文件?
目前在用selenium python做自动化测试,使用IE时Send_keys()写入时几秒钟蹦一个字符,请问如何加快速度呢