日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Unix操作系統(tǒng)中處理字符串問(wèn)題的簡(jiǎn)單方式

在Unix操作系統(tǒng)中,說(shuō)實(shí)話其字符串的處理功能實(shí)在不強(qiáng) 。如沒(méi)有現(xiàn)成的length(獲取字符串的長(zhǎng)度)等函數(shù) 。要實(shí)現(xiàn)對(duì)字符串的操作,往往需要采用 expr命令結(jié)合相關(guān)的通配符來(lái)實(shí)現(xiàn)一些特定的功能 。雖然在Unix操作系統(tǒng)中,對(duì)于字符串的操作比較麻煩 。但是系統(tǒng)工程師只要知道各種處理方式特點(diǎn)與缺點(diǎn),那么對(duì)癥下藥,仍然可以找到一些簡(jiǎn)單的方式來(lái)處理系統(tǒng)中的字符串問(wèn)題 。
一、對(duì)用戶輸入的字符串長(zhǎng)度進(jìn)行驗(yàn)證 。
系統(tǒng)工程師有時(shí)候往往需要對(duì)用戶輸入的字符串長(zhǎng)度進(jìn)行驗(yàn)證 。如在設(shè)計(jì)一個(gè)登陸程序時(shí),為了安全起見(jiàn),可能需要限制用戶密碼輸入的最小位數(shù),如必須是六位以上的密碼等等 。此時(shí),其實(shí)就是統(tǒng)計(jì)用戶輸入的字符串長(zhǎng)度問(wèn)題 。如果用戶輸入的密碼長(zhǎng)度不夠,就提醒用戶;如果夠的話,就直接保存用戶輸入的信息 。所以,簡(jiǎn)單的說(shuō)這可以利用if語(yǔ)句或者while循環(huán)判斷語(yǔ)句來(lái)實(shí)現(xiàn) 。而這個(gè)條件則可以利用expr關(guān)鍵字來(lái)實(shí)現(xiàn) 。
如果用判斷用戶輸入的字符串長(zhǎng)度,可以利用如下的格式來(lái)寫(xiě) 。Expr “$userpasswd : ’.*’ 即可 。在編寫(xiě)這個(gè)命令時(shí),需要注意一些基本的規(guī)則 。如這個(gè)expr命令往往需要使用兩個(gè)表達(dá)式,而且中間需要使用英文狀態(tài)小的冒號(hào)進(jìn)行分割 。而且這個(gè)兩個(gè)表達(dá)式的順序也有嚴(yán)格的限制 。冒號(hào)左邊是需要處理的字符串(需要統(tǒng)計(jì)長(zhǎng)度的字符串或者變量),而冒號(hào)右邊則是普通的正則表達(dá)式 。其次,需要處理的字符串需要使用雙引號(hào)括起來(lái) 。這里跟普通命令中字符串的處理方式有所不同 。在普通的命令中,變量不需要使用雙引號(hào)因起來(lái) 。如果引起起來(lái)的話,則系統(tǒng)反而會(huì)將其當(dāng)作常量來(lái)處理 。但是如果在if條件語(yǔ)句中將利用這個(gè)命令來(lái)統(tǒng)計(jì)字符串長(zhǎng)度時(shí),則需要將變量使用雙引號(hào)引起來(lái) 。這個(gè)字符串處理上的差異需要注意,不少系統(tǒng)工程師在這里吃過(guò)虧 。第三,有時(shí)候正則表達(dá)式也需要利用單引號(hào)來(lái)引起來(lái) 。如上面的’.*’則表示所有匹配的字符 。如果不使用單引號(hào)的話,系統(tǒng)可能會(huì)提示語(yǔ)法錯(cuò)誤 。
二、截取字符串 。
有時(shí)候系統(tǒng)管理員需要截取字符串的自串來(lái)完成特定的任務(wù) 。如現(xiàn)在系統(tǒng)工程師需要對(duì)某個(gè)文件根據(jù)系統(tǒng)的時(shí)間來(lái)進(jìn)行命名,其命名的規(guī)則為年份(最后兩位)加月份的形式,即0906表示這個(gè)文件是09年6月份創(chuàng)建的 。因?yàn)槊總€(gè)月創(chuàng)建一個(gè)獨(dú)立的日志文件,為此按這個(gè)格式對(duì)其進(jìn)行命名算是比較合理的 。但是在系統(tǒng)中實(shí)現(xiàn)起來(lái)有一定的困難 。然后通過(guò)date命令加上一些可選項(xiàng)參數(shù)可以截取日期的年份、月份等信息 ??墒抢胐ate命令截取的年份是四位數(shù)字(如 2009),而不是兩位數(shù)字 。這跟系統(tǒng)工程師的需求還有一定的距離 。那么如果一定要采用年份的兩位數(shù)字來(lái)對(duì)文件或者文件夾進(jìn)行命名,該如何處理呢?
此時(shí)就需要用到expr命令的另一個(gè)功能,即截取字符串的功能 。一般來(lái)說(shuō),expr命令主要有三個(gè)功能,分別為求字符串的長(zhǎng)度、截取字符子串、求一個(gè)字符在一個(gè)字符串中的位置 。當(dāng)然如果這些功能跟其他命令結(jié)合使用的話,可以實(shí)現(xiàn)一些比較復(fù)雜的需求 。在Unix系統(tǒng)中,如果需要截取字符串的話,筆者首先建議的是采用一些自帶的命令 。如date %w則表示顯示今天星期幾 。雖然expr命令也可以實(shí)現(xiàn)類(lèi)似的功能,但是初期起來(lái)比較麻煩 。為此對(duì)于截取字符串筆者建議,能夠使用系統(tǒng)自帶功能來(lái)實(shí)現(xiàn)的,那么就使用系統(tǒng)自帶的命令 。如果沒(méi)有的話,那么就只有用過(guò)expr命令來(lái)實(shí)現(xiàn) 。也就是說(shuō),expr 是一個(gè)通用的命令,所有的字符串截取工作其都可以完成 。只是代碼書(shū)寫(xiě)起來(lái)沒(méi)有那些系統(tǒng)自帶命令那么簡(jiǎn)單 。如果現(xiàn)在系統(tǒng)工程師需要截取年份的后兩位數(shù)字,此時(shí)該如何處理呢?在系統(tǒng)轉(zhuǎn)義字符的幫助下,可以完成這個(gè)功能 。如下所示:

推薦閱讀