2014-11-03 5 views
0

일부 리눅스 명령을 실행하려면 pexpect를 사용하고 있습니다. 명령 내에서 변수를 사용하는 데 문제가 있습니다. 예 :인수로 파이썬 변수

first_dir="/opt/dirA" 
second_dir="/opt/dirB" 

내가 dirB에 dirA을 복사하려면 :

cmd="cp -rp " +first_dir +" " +second_dir 
print("cmd is ",cmd) 
s.sendline(cmd) 

그것은 오류주고 : 후 대상 파일 피연산자를 누락`/ 옵션/dirA ' 그러나 인쇄 출력은 오른쪽 (CP입니다 - rp/opt/dirA/opt/dirB) 및 다음 명령이 작동합니다. s.sendline ("cp -rp/opt/dirA/opt/dirB")

내가 잘못하고있는 것을 누군가 볼 수 있습니까?

+0

무엇이'repr (cmd)'입니까? Btw. '+'대신 문자열 형식을 사용하십시오. – Daniel

+0

repr (cmd)는 저에게 'cp -rp/opt/dirA/opt/dirB \ x1b] 0을 제공합니다 root @ myserver : ~ \ x07/opt/dirB –

+1

만약 그 모든 것들이'repr'에 있다면, 어떻게 든 커서 이동 컨트롤 코드를 스크립트에 편집했습니다. 수정 사항은 스크립트를 수정할 수있는 적절한 편집기에서 스크립트를 편집하는 것입니다. 처음에 잘못 편집 한 방법을 다시 확인하지 않으려 고 할지도 모릅니다. 내 생각 엔'cat> script.py' 같은 것을 한 것입니까? – abarnert

답변

1

first_dirsecond_dir은 문자열이 아닙니다. 시도해보십시오 first_dir = "/opt/dirA".

+0

예 죄송합니다. 너무 빨리 작성했습니다. 나는 변화를 만들었다. 그들은 끈이다. –

0

비밀은 os.environ 배열을 사용하는 것입니다. 당신은 여기에서 예를 찾을 수 있습니다 : 당신이 볼 수 있듯이

#!/usr/bin/python 
import os 
first_dir = os.environ["first_dir"] 
second_dir = os.environ["second_dir"] 

이 스크립트는 같은 이름의 두 파이썬 변수로 리눅스 환경 변수 first_dir 및 second_dir을 읽습니다.

관련 문제