Linux

如何使用“期望”將文件內容讀入變數?

  • September 22, 2018

我在編寫期望腳本時遇到了麻煩。我想做與以下 bash 指令等效的操作:

iplist=$(cat iplist.txt)

我已經嘗試過以set我所知道的所有方式使用,但它仍然無法正常工作。還有其他方法還是只是我沒有以正確的方式使用它?

set iplist=$(cat iplist.txt)

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

如果另存為readfilesomefile作為輸入給出:

% 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
ティックル
% 

感謝您的回答,我剛剛在另一篇文章中找到了解決方案,在函式set中唯一缺少的是“exec”,結果如下:

set iplist [exec cat /root/iplist.txt]

並且期望文件進展順利,沒有任何麻煩!

引用自:https://unix.stackexchange.com/questions/470566