Linux
如何使用“期望”將文件內容讀入變數?
我在編寫期望腳本時遇到了麻煩。我想做與以下 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
如果另存為
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 ティックル %
感謝您的回答,我剛剛在另一篇文章中找到了解決方案,在函式
set
中唯一缺少的是“exec”,結果如下:set iplist [exec cat /root/iplist.txt]
並且期望文件進展順利,沒有任何麻煩!