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

Bethany avatar
By Bethany
at 2011-04-21T18:51

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是還原@@

--
Tags: Linux

All Comments

Liam avatar
By Liam
at 2011-04-24T03:32
感謝~我明天去試試 ^^

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

Franklin avatar
By Franklin
at 2011-04-21T17:28
※ 引述《whale76109 (傑)》之銘言: : 我想請教各位一個script執行上的問題 : 為了讓大家簡單明瞭我的問題 : 我用一個script的例子來說明: : #!/bin/bash : read test : sleep 3 : echo $test : 上面這段code : 若是執行到slee ...

UBUNTU 10.10 telnet 連線

John avatar
By John
at 2011-04-21T16:28
想請問 UBUNTU 系統 在使用 telnet 連線到 其他台 LINUX系統時 有登入成功 也可以看到對方資料夾檔案了 不過想要使用對方電腦內程式時,卻在UBUNTU的LOCAL端秀不出來 同樣的方式 在 SUSE 11.3版中 我是要開啟Yast裡面的 sysconfig編譯器/Deskto ...

Qt該下載哪一個

Rosalind avatar
By Rosalind
at 2011-04-21T13:32
由於參加比賽 規定環境是Qt 4.2 http://get.qt.nokia.com/qt/source/ 在這網站有open source可以下載 但我不知道要下載哪個 我的作業系統是ubuntu 10.10 印象中x11是mac的吧atat 但我還是載了他來用 ./configure -l ...

Opensuse 11.4 無法進入 X windows

Frederic avatar
By Frederic
at 2011-04-21T13:28
各位大大 安裝過程一切都算順利 (我是裝i586 32位元版) 也可以跑到輸入帳密的地方 但是 一但我按下 登入以後 過一下子馬上就出現黑畫面 可以改到文字模式下登入 我有試過改VGA參數 可是改了很多組還是不行 另外我有試過在grub選單那邊 選擇safe mode (選單第二個) 是可以正 ...

RH網頁伺服器連不上(已檢查apache及iptable)

Carol avatar
By Carol
at 2011-04-21T11:38
我在 redhat linux 上裝了 apache,但是卻無法由瀏覽器連上主機 我做了下面的檢查但找不出原因 1. 檢查 apache status: $sudo /etc/init.d/httpd status 主機回應: httpd (pid 30588) is running... ...