기대 스크립트를 작성하는 데 문제가 있습니다. 다음 bash 명령과 동일한 작업을 수행하고 싶습니다.
iplist=$(cat iplist.txt)
set
제가 아는 모든 방법을 다 사용해봤지만 여전히 효과가 없습니다. 다른 방법이 있습니까? 아니면 올바른 방법으로 사용하지 않는 것입니까?
set iplist=$(cat iplist.txt)
답변1
귀하의 답변에 감사드립니다. 방금 다른 게시물에서 해결책을 찾았습니다. set
함수에 누락된 유일한 것은 "exec"였으며 결과적으로 다음 줄이 표시되었습니다.
set iplist [exec cat /root/iplist.txt]
예상했던 파일은 문제 없이 원활하게 진행되었습니다!
답변2
TCL은 할 수 있다read(n)
파일에 직접 저장하는 것이 특정 명령을 분기하는 것보다 더 효율적이고 이식성이 뛰어납니다.
#!/usr/bin/env expect
proc slurp {file} {
set fh [open $file r]
set ret [read $fh]
close $fh
return $ret
}
set iplist [slurp iplist.txt]
puts -nonewline $iplist
이는 또한 (필요한 경우) 다양한 허용을 허용합니다.open(n)
또는chan configure
인코딩 설정과 같이 지정할 옵션은 다음과 같습니다.
#!/usr/bin/env expect
package require Tcl 8.5
proc slurp {file {enc utf-8}} {
set fh [open $file r]
chan configure $fh -encoding $enc
set ret [read $fh]
close $fh
return $ret
}
set data [slurp [lindex $argv 0] shiftjis]
chan configure stdout -encoding utf-8
puts $data
다음과 같이 저장 readfile
하고 입력으로 제공하는 경우 somefile
:
% file somefile
somefile: DBase 3 data file with memo(s) (1317233283 records)
% xxd somefile
00000000: 8365 8342 8362 834e 838b .e.B.b.N..
% ./readfile somefile
ティックル
%