2016-08-12 4 views
0

tcl의 배열에 명령 줄 인수를 저장하는 방법은 무엇입니까?배열에 명령 줄 인수를 저장하는 방법

배열에 명령 줄 인수 (argv)를 저장하려고합니다. argv가 배열이 아닌가? 다음 코드를 시도했지만 나를 위해 작동하지 않습니다. 주문 사항 및 목록은 인수 일을 완전히 합리적인 방법이기 때문에

proc auto args { 
    global argv 
    set ifname [lindex $argv 0] 
    puts "***********$ifname" 
    puts "$argv(2)" 
    for { set index 1} { $index < [array size argv ] } { incr index } { 
     puts "argv($index) : $argv($index)" 
    } 
} 
#Calling Script with arguments 
auto {*}$argv 
+0

는, ARGV는 목록에없는 배열입니다, 그래서 당신은 그것의 요소와 llength에 액세스 할 수 LINDEX을 사용 그 크기를 찾는다. –

+0

tcl에서'array'라는 단어는 다른 언어의 배열을 의미하지 않는다는 것에주의하십시오. 목록이 아닌 배열을 원하십니까? 키 -> 값 쌍 데이터 구조를 원한다고하더라도 배열과 DICT가 필요하지 않습니까? – slebetman

답변

3

는 티클의 argv 글로벌은 목록이 아닌 배열입니다. 그래서 lindex (및 기타 목록 연산)을 사용합니다. 당신은 배열로 변환 할 수 있지만, 대부분의 코드는 그것에 의해 "놀라게"될 것입니다. 따라서, 그것은 ("arguments"아래) 그것을 위해 다른 배열 이름을 사용하는 것이 좋습니다 :

티클 측면에서
proc argumentsToArray {} { 
    global argv arguments 
    set idx 0 
    unset -nocomplain arguments; # Just in case there was a defined variable before 
    array set arguments {};  # Just in case there are no arguments at all 
    foreach arg $argv { 
     set arguments($idx) $arg 
     incr idx 
    } 
} 

argumentsToArray 
puts "First argument was $argument(0) and second was $argument(1)" 
관련 문제