日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一章:The Missing Code Library--2.合法化输入

發布時間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一章:The Missing Code Library--2.合法化输入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

合法化輸入:只允許數字和字母
? ?用戶常常會忽略掉說明,并且輸入錯誤的數據。作為一個Shell腳本開發人員,你需要攔截并糾正這些錯誤。
? ?典型情況是,你或許會遇見文件名或是數據庫的鍵。你提示用戶要輸入一個全部由大小寫字母和數字組成的字符串,沒有標點,沒有特殊字符,沒有空格。他們是否輸入正確了?這就是這個腳本要測試的內容。

validAlphaNum.sh 1 # validAlphaNum.sh - 確保輸入只由數字、字母構成 2 3 #!/bin/sh 4 5 validAlphaNum() 6 { 7 # 合法化參數:都是大寫字母+小寫字母+數字,返回0;否則,返回1 8 9 # 刪除所有不可接受的字符 10 compressed="$(echo $1 | sed -e 's/[^[:alnum:]]//g')" 11 12 if [ "$compressed" != "$input" ]; then 13 return 1 14 else 15 return 0 16 fi 17 }

該函數的示例用法。下面的代碼直接添加到validAlphaNum.sh中:

validAlphaNum.sh 1 echo -n "輸入:" 2 read input 3 4 if ! validAlphaNum "$input"; then 5 echo "輸入只能是字母和數字。" >&2 6 exit 1 7 else 8 echo "輸入合法。" 9 fi 10 11 exit 0

腳本分析:
? ?腳本的邏輯是很明確的。首先,它用sed將輸入轉換為全新的。然后,比較了新的數據和原始的。如果2個完全相同,那么非常完美。否則,轉換中丟失的數據就不屬于字符數字的集合,所以原始輸入時非法的。
? ?sed的特殊作用是處理不在POSIX字符類[:alnum:]中的數據。該字符類是所有大寫字母、小寫字母、數字的集合。如果sed處理后的數據并不匹配之前的輸入,那么所有字母數字的移動揭示了這樣一個問題:在輸入字符串(非法的)中有非數字字母的存在,然后函數會返回一個非0值。

運行腳本:
? ?這個腳本本身是完備的。它會提示輸入,并通知你結果是否合法。這個函數的更典型的用法是放在一個腳本或者一個庫的頭部。會在第12個腳本中演示。
? ?這個腳本展示了一個非常好的一般性的shell腳本編程技術:先寫下一個函數,然后緊接著就測試下。完畢后,再把這個函數放到一個更大、更完備的腳本中。這樣,會給你以后省下不少事。

結果:

./validAlphaNum.sh 輸入:valid123SAMPLE 輸入合法。 ./validAlphaNum.sh 輸入:this is most assuredly NOT valid, 12345 輸入只能是字母和數字。

?

?

轉載于:https://www.cnblogs.com/lalala23456/archive/2012/11/28/2792959.html

總結

以上是生活随笔為你收集整理的第一章:The Missing Code Library--2.合法化输入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。