「expect」を使ってファイルの内容を変数として読み取るには?

「expect」を使ってファイルの内容を変数として読み取るには?

期待スクリプトの作成に問題があります。次の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
ティックル
% 

関連情報