【发布时间】:2014-11-03 21:17:04
【问题描述】:
我正在使用 pexpect 运行一些 linux 命令。我在命令中使用变量时遇到问题。例如:
first_dir="/opt/dirA"
second_dir="/opt/dirB"
我想将 dirA 复制到 dirB:
cmd="cp -rp " +first_dir +" " +second_dir
print("cmd is ",cmd)
s.sendline(cmd)
它给出了一个错误:在 `/opt/dirA' 之后缺少目标文件操作数 但是打印输出是正确的(cp -rp /opt/dirA /opt/dirB)并且以下命令有效 s.sendline("cp -rp /opt/dirA /opt/dirB")
谁能看出我做错了什么?
【问题讨论】:
-
什么是
repr(cmd)?顺便提一句。使用字符串格式而不是+。 -
repr(cmd) 给我 'cp -rp /opt/dirA /opt/dirB\x1b]0;root@myserver:~\x07 /opt/dirB
-
如果所有这些内容都在
repr中,那么您显然已经在脚本中编辑了一些光标移动控制代码。解决方法是在可以修复这些问题的适当编辑器中编辑脚本。您可能还想首先弄清楚您是如何错误地编辑它的,以确保您不会再这样做。我猜你做了类似cat > script.py的事情? -
同时,您尝试
pexpect一个shell 有什么原因吗?如果您想使用 Python,它可以为您执行复制文件(请参阅shutil)或运行任意程序(请参阅subprocess)之类的操作。如果你想编写 shell 脚本,bash 本身通常比 Python 更好...... -
感谢您的回答,我会尽力找出我做错了什么。我需要使用 pexpect,因为我想自动执行需要几个小时以及用户需要回答几个提示的任务。一旦我发现我的代码有问题,我会编辑我的问题。