Re: [問題] bash script 模擬使用者輸入

看板Linux作者 (習慣)時間17年前 (2008/11/13 11:22), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《winter0128 (winter0128)》之銘言: : #!/bin/bash : for((i=1;i<=5;i++)) : do : <<ZZZ : ./test1 : $i : ZZZ : done : 推 antontw:搞錯對象,應該用 expect 而不是 bash 11/13 01:04 : → antontw:<< 不是丟到 test1 的 stdin ,所以沒用 11/13 01:05 : → winter0128:可以實際寫出來解釋嗎,還是不太懂 11/13 11:01 expect 是可程式化用在互動模式上的一個對話模組 ( programmed dialogue with interactive programs ) # 在 Ubuntu 底下,需要 apt-get install expect 一個簡單的範例: cat tftpput <code> #!/usr/bin/expect spawn tftp 192.168.1.1 expect tftp> send bin\r expect tftp> send "put $argv\r" expect tftp> send quit\r interact </code> 使用方式: ./tftpput file.bin 說明: tftp 連上線,看到 "tftp>" 字串時會丟出 bin 換行,把傳輸 mode 設作 binary 接著等 tftp server 有回應字串,再送出 put file.bin 把 file.bin 送到 tftp server 上面,等做完, tftp server 有回應字串,再送出離開字串, 回到交談模式。 一般程式的回應過程會有很多變數延遲, 也很少那麼剛好就是前面接收程式輸入的點, 所以建議會用 expect 來做這件事情。 -- 不過你的 test1 沒有寫明是什麼交談內容,所以我就沒寫"可能"的結果了~ (* ^^*) <--- 其實是 expect 也沒多熟~ -- 人不作出犧牲,便得不到任何收穫;如果要得到某種東西,就必須付出同等代價。這一點 ,就是鍊金術的基本原則 ── 等價交換。當時我們深信這一點就是世界的真理。 阿爾風斯‧愛力克,《鋼之鍊金術師》開場白 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.134.245
文章代碼(AID): #196vrx5F (Linux)
文章代碼(AID): #196vrx5F (Linux)