Ale*_*var 8 linux shell-script expect
我在编写期望脚本时遇到困难。我想做一些相当于以下 bash 指令的事情:
iplist=$(cat iplist.txt)
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用set我所知道的所有方法,但仍然不起作用。还有其他方法还是只是我没有以正确的方式使用它?
set iplist=$(cat iplist.txt)
Run Code Online (Sandbox Code Playgroud)
感谢您的回答,我刚刚在另一篇文章中找到了解决方案,在该函数中set唯一缺少的是“exec”,导致该行:
set iplist [exec cat /root/iplist.txt]
Run Code Online (Sandbox Code Playgroud)
预期文件进展顺利,没有任何问题!
TCL可以read(n)直接生成文件;这比分叉给某些命令更有效且更便携。
#!/usr/bin/env expect\n\nproc slurp {file} {\n set fh [open $file r]\n set ret [read $fh]\n close $fh\n return $ret\n}\n\nset iplist [slurp iplist.txt]\n\nputs -nonewline $iplist\nRun Code Online (Sandbox Code Playgroud)\n\n这也(如果需要)允许指定各种open(n)或选项,例如设置编码:chan configure
#!/usr/bin/env expect\n\npackage require Tcl 8.5\n\nproc slurp {file {enc utf-8}} {\n set fh [open $file r]\n chan configure $fh -encoding $enc\n set ret [read $fh]\n close $fh\n return $ret\n}\n\nset data [slurp [lindex $argv 0] shiftjis]\n\nchan configure stdout -encoding utf-8\nputs $data\nRun Code Online (Sandbox Code Playgroud)\n\n如果保存为并作为输入readfile给出:somefile
% file somefile\nsomefile: DBase 3 data file with memo(s) (1317233283 records)\n% xxd somefile\n00000000: 8365 8342 8362 834e 838b .e.B.b.N..\n% ./readfile somefile\n\xe3\x83\x86\xe3\x82\xa3\xe3\x83\x83\xe3\x82\xaf\xe3\x83\xab\n% \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
10431 次 |
| 最近记录: |