第一章:The Missing Code Library--2.合法化输入
合法化輸入:只允許數字和字母
? ?用戶常常會忽略掉說明,并且輸入錯誤的數據。作為一個Shell腳本開發人員,你需要攔截并糾正這些錯誤。
? ?典型情況是,你或許會遇見文件名或是數據庫的鍵。你提示用戶要輸入一個全部由大小寫字母和數字組成的字符串,沒有標點,沒有特殊字符,沒有空格。他們是否輸入正確了?這就是這個腳本要測試的內容。
該函數的示例用法。下面的代碼直接添加到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.合法化输入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win2012R2安装net4.6.2失
- 下一篇: 《架构之美》学习随笔:好的架构