2016-12-27 3 views
0

그래서 ns2에서 실행해야하는 tcl 코드가 있습니다. 우리 모두 알고 있듯이 터미널에 'ns abc.tcl'을 입력하면됩니다. 내 abc.tcl 코드에서 나는 코드를 변경하고 실행해야하는 변수 x가 있습니다. x 값을 변경하고 터미널에서 'ns abc.tcl'을 실행 한 다음 값을 다시 변경하고 터미널에 'ns abc.tcl'을 실행하여 x 값 세트를 다시 입력하는 스크립트를 작성할 수있는 방법이 있습니까? . 나는 쉘 스크립트를 작성해야한다고 생각하지만 그것에 대해 아무것도 모른다. 당신은 나에게 내가 무엇을 먼저 써야하는지, 그리고 x의 값을 어떻게 써야하는지, 터미널에서 'abc. tcl'을 어떻게 실행시키는 지와 같이 스크립트를 작성해야하는 형식을 말할 수 있습니까? 'function()' 'do' ' 완료 '등 ... 만약 당신이 그것에 대한 구체적인 링크를 안내 할 수 있다면 도움이 될 것입니다.쉘 명령을위한 루프를 만드는 스크립트

+0

'bash'에 스크립트를 작성하여 'tcl'코드에 변수를 입력 하시겠습니까? 왜 명령 행을 전달하여'tcl' 안에서 처리 할 수 ​​없습니까? – Inian

+0

사실 내 tcl 코드는 결과로 정수 (처리량)를 생성합니다. x 값은 매우 넓기 때문에 혼자서 바꾸고 매번 실행해야합니다. 나는 for 루프를 작성하여 전체 tcl 코드를 감싸려고했지만 작동하지 않았다. – instame

답변

0

가장 쉬운 방법은 값을 인수로 전달하는 것입니다.

  1. ns abc.tcl TheValueToPassIn으로 코드를 호출하십시오.

  2. 액세스 스크립트 이름 뒤에 모든 인수의 목록이 포함되어 있어야합니다 lindexargv 전역 변수로 인덱싱하여 코드 내에서 값 : 그러나

    set myValue [lindex $::argv 0] 
    

는, 그 것을 가능 작동하지 않습니다 (정확히에 따라 ns 프로그램에서 수행). 그렇다면 값을 환경 변수 내부로 전달하십시오.

  1. MYVAR=TheValueToPassIn ns abc.tcl으로 코드를 호출하십시오.

  2. 액세스 글로벌 env 배열에보고하여 코드 내에서 값 :

    set myValue $::env(MYVAR) 
    

그것을 할 여러 가지가 있습니다 만, 그 두 매우 쉽습니다.