我试图运行此命令:
foo=`ls /`
完全适用于bash,但如果我通过pexpect执行它,则不行。
p = pexpect.spawn("foo=`ls /`").interact()
// Gives error command was not found or not executable: foo=`ls
原因是什么?如何解决?我甚至试图逃避`但似乎它不起作用。
答案 0 :(得分:1)
您尝试执行的命令需要bash
。 pexpect
不会通过bash
传递您的命令,而是直接调用您的可执行文件,就像它是shell一样。
来自the docs:
请记住,Pexpect不会解释shell元字符,例如 重定向,管道或外卡(>,|或*)。这是一个常见的错误。 如果要运行命令并通过另一个命令管道它 你还必须启动一个shell。例如:
child = pexpect.spawn('/bin/bash -c "ls -l | grep LOG > log_list.txt"')
child.expect(pexpect.EOF)
虽然文档没有提到它们,但这肯定也适用于反引号。因此,编写代码以明确调用bash
:
p = pexpect.spawn('/bin/bash -c "foo=`ls /`"').interact()