執行shell script過程中禁止/忽略鍵盤輸入 - Linux

Table of Contents

※ 引述《whale76109 (傑)》之銘言:
: ※ 引述《whale76109 (傑)》之銘言:
: : 我想請教各位一個script執行上的問題
: : 為了讓大家簡單明瞭我的問題
: : 我用一個script的例子來說明:
: : #!/bin/bash
: : read test
: : sleep 3
: : echo $test
: : 上面這段code
: : 若是執行到sleep階段時
: : 我在鍵盤上隨意敲幾個字母並且按下enter
: : 例如我敲了:abcdef
: : 執行完這段程式後
: : abcdef會被當成新的指令執行
: : 我要如何才能禁止這種情況發生呢?
: : 換句話說
: : 我要如何在執行一個script的時候
: : 除非我在script中下了read指令
: : 不然所有的鍵盤輸入皆被忽略
: 不曉得還有沒有人可以解決我所描述的問題
: 如果真的沒辦法的話
: 我還有另一個想法
: 只是我也不知道要怎麼實做就是了… Orz
: 因為我只是要"暫時"停止輸入的功能
: 因此如果可以"暫時"把usb鍵盤從系統中卸除
: 需要時再配置回系統
: 那也可以達到我的目的
: 不曉得有沒有人可以提供關於我這兩個想法要如何實做的方法
: 任何一種都可以
: 謝謝

剛剛無聊查了一下@ @

把你原來的script改成如下即可

#!/bin/bash

read test
stty igncr
sleep 3
echo $test
stty -igncr


----------------------------------------------------
只是過程中的輸入的字會出現= =

你可以再看看怎麼解決~~

stty的igncr的指忽略輸入的cr 就是把後來按的enter清掉,

所以就不會在script結束後去執行中途輸入的command

結尾的stty -igncr是還原@@

--

All Comments

Liam avatarLiam2011-04-24
感謝~我明天去試試 ^^