2016-07-06 3 views
1

나는 현재 다음과 같은 명령어 에테 리움 geth console를 열고 실행하는 간단한 expect 스크립트를 쓰고 있어요 :스크립트 예상 : 단일 인용 부호에도 불구하고 실행하는 동안 근접 중괄호 후 추가 문자를

#!/usr/bin/expect 
spawn /usr/bin/geth --testnet console 
expect ">" 
send "personal.unlockAccount('0xdc85a8429998bd4eef79307e556f70bb70d8caf1','X');\r" 
expect "true" 
expect ">" 
send "var mortalContract=web3.eth.contract([{constant:!1,inputs:[],name:'kill',outputs:[],type:'function'},{constant:!1,inputs:[],name:'cashOut',outputs:[],type:'function'},{inputs:[],type:'constructor'}]),mortal=mortalContract['new']({from:'0xdc85a8429998bd4eef79307e556f70bb70d8caf1',data:'60606040525b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908302179055505b61016e8061003f6000396000f360606040526000357c01000000000000000000000000000000000000000000000000000000009004806341c0e1b514610044578063793cd71e1461005357610042565b005b6100516004805050610062565b005b61006060048050506100f6565b005b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156100f357600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b60003073ffffffffffffffffffffffffffffffffffffffff16319050600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600060028304604051809050600060405180830381858888f19350505050505b5056',gas:47e5},function(f,t){console.log(f,t),'undefined'!=typeof t.address&&console.log('Contract mined! address: '+t.address+' transactionHash: '+t.transactionHash)});\r" 
expect "undefined" 
expect ">" 
send "exit\r" 
expect eof 

컴파일러는 문제가 있습니다를 라인 7 (var mortalContract으로 시작하는 라인). 나는 주변 검색 및 큰 따옴표 큰 따옴표 내가 한 것들 이중 내부 따옴표를 변경하지만 여전히 작동하지 않습니다 그래서 기대하고 다음과 같은 오류를 반환 방해 것을 발견

extra characters after close-brace 
    while executing 
"send "var mortalContract=web3.eth.contract([{constant:!1,inputs:[],name:'kill',outputs:[],type:'function'}," 
    (file "expectScript.js" line 7) 

답변

1

는 뒤에 공백을 추가 할 필요가 각 닫는 중괄호}

1

대괄호는 Tcl의 특수 구문입니다. 그것들은 쉘에있는 역 따옴표와 같습니다 : 내부에있는 명령을 실행하고 결과로 대체하십시오. 셸과 마찬가지로 큰 따옴표로 명령을 대체 할 수 있습니다. 나는 중괄호 있습니다 티클의 비 보간 따옴표, 사용합니다 : 작은 따옴표가 티클에서 절대적으로 특별한 의미가 없습니다 (따라서 기대하는) 것을

send {var mortalContract=web3.eth.contract([{constant:... '+t.transactionHash)});} 
# ...^...........................................................................^ 
send "\r" 
+0

주 - 그들은 단지 일반 문자입니다. –