shell 指令碼對從鍵盤輸入的字元進行校驗

2022-06-22 13:39:15 字數 747 閱讀 6300

當編寫shell指令碼時,總是不可避免的要與外界進行互動。

通過 read -p "請輸入:" input 指令,可以實現由鍵盤到指令碼的互動。

但是由輸入法進行輸入的時候,不可避免會產生一些特殊字元,如果一起輸入指令碼,會造成指令碼的不穩定,因此需要對從鍵盤輸入

的字元進行校驗。

path=`pwd`

while true

doecho " 請從鍵盤輸入名稱"

echo " 名稱只能由中文、英文、數字組成"

read -p " name: " name

if [ -e $/name.txt ]; then

rm -rf $/name.txt

fiecho "$name" >> $/name.txt

# 通過perl 去除中文

perl -pi -e 's/[\x80-\xff]//g' $/name.txt

# 通過sed 去除英文和數字

filter_input=`cat $/name.txt | sed 's/[0-9a-za-z]//g'`

if [ ! -z $filter_input ]; then

echo " 您輸入的name: $name 不符合格式要求,請重新輸入"

else

break

fidone

嘗試通過sed識別中文失敗後,通過perl 來識別中文。

perl中漢字採用gbk編碼,可以正常進行識別。

shell接受鍵盤輸入引數

root localhost read 選項 變數名 選項 a 後跟乙個變數,該變數會被認為是個陣列,然後給其賦值,預設是以空格為分割符。p 提示資訊 在等待read輸入時,輸出提示資訊 t 秒數 read命令會一直等待使用者輸入,使用此選項可以指定等待時間 n 數字 read命令只接受指定的字元數...

rust 從鍵盤輸入資料

直接上 吧!use std io fn main guess 很有意思,rust借鑑了很多函式式程式設計的思想,前幾年學過haskell,現在感到有些面熟。下面這個命令,沒有用c 慣用的建構函式,而是使用了乙個函式,返回乙個類的例項。let mut guess string new rust的編譯機...

C 從鍵盤輸入的方法

c 最基本的常用的輸入方式 包含標頭檔案 include 注意 不能接受空格和回車 int main 1 scanf 函式 包含標頭檔案 include scanf函式一般格式為scanf s st 但scanf預設回車和空格是輸入不同組之間的間隔和結束符號,所以輸入帶空格,tab或者回車的字串都是...