色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Unix中利用列表作為循環(huán)

瀏覽:29日期:2024-06-10 13:24:21

在Unix操作系統(tǒng)中開(kāi)發(fā)應(yīng)用程序,循環(huán)語(yǔ)句可以說(shuō)占了半壁江山。由于Unix操作系統(tǒng)中采用的是shell編程環(huán)境,為此循環(huán)機(jī)制在結(jié)構(gòu)上不同于其他的高級(jí)語(yǔ)言,如循環(huán)語(yǔ)句之一的for循環(huán),就存在很大的差異。筆者就跟大家介紹一下,在Unix操作系統(tǒng)中如何使用for循環(huán)以及相關(guān)的注意事項(xiàng),幫助大家提高對(duì)這個(gè)for循環(huán)的利用程度。

一、for循環(huán)的基本結(jié)構(gòu)。

在shell環(huán)境中,for循環(huán)主要有兩部分組成,分別為循環(huán)列表于操作語(yǔ)句。具體格式如下:

for variable in list (循環(huán)列表)

do

commands (操作語(yǔ)句)

done

從上面這個(gè)結(jié)構(gòu)中可以看出,在for循環(huán)中使用變量和列表來(lái)定義循環(huán)列表。另外,在利用do與done關(guān)鍵字將要執(zhí)行的操作括起來(lái)。其中變量的作用就是依次從循環(huán)列表中取值,并將這個(gè)參數(shù)值傳遞給操作語(yǔ)句,進(jìn)行相關(guān)的操作。其實(shí),在學(xué)習(xí)這個(gè)for循環(huán)中,操作語(yǔ)句部分并沒(méi)有多少的難度,或者說(shuō)沒(méi)有新鮮的內(nèi)容。因?yàn)檫@里就是一些unix操作系統(tǒng)的基本語(yǔ)句所構(gòu)成的。而其難點(diǎn)就是在于循環(huán)列表的確定。因?yàn)檫@個(gè)循環(huán)列表關(guān)系到for循環(huán)運(yùn)行的兩個(gè)關(guān)鍵參數(shù),一是循環(huán)的次數(shù),二是循環(huán)內(nèi)部操作所需要用到的參數(shù)值。為此筆者在介紹這個(gè)for循環(huán)時(shí),重點(diǎn)也是放在這個(gè)循環(huán)列表的設(shè)置上。也就是說(shuō),系統(tǒng)工程師只要精通這個(gè)循環(huán)列表的編寫,那么其他內(nèi)容不會(huì)有問(wèn)題。

二、如何編制循環(huán)列表?

由于shell是一個(gè)跟Unix操作系統(tǒng)友好集成的編程環(huán)境,或者說(shuō)是操作系統(tǒng)中的一個(gè)部分。為此這個(gè)循環(huán)列表的定義方式要比高級(jí)語(yǔ)言的for循環(huán)豐富的多。如可以使用很多操作系統(tǒng)的文件或者參數(shù)來(lái)作為其循環(huán)條件。具體來(lái)說(shuō),系統(tǒng)工程師可以按照如下的規(guī)則來(lái)設(shè)置這個(gè)循環(huán)列表。

1、 利用文件來(lái)作為循環(huán)列表。

有時(shí)候可能列表比較大,如總共有100多個(gè)條目。雖然可以依次將這些條目寫在for語(yǔ)句的循環(huán)列表中,但是會(huì)大大的增加代碼的長(zhǎng)度,從而影響其閱讀。而且以后若要更改這些條目的話,還需要去更改這個(gè)源代碼。顯然這會(huì)很麻煩。如現(xiàn)在系統(tǒng)工程師需要查找在用戶目錄下,是否有用戶想要的20個(gè)文件。這20個(gè)文件名字沒(méi)有什么規(guī)律。正常情況下,用戶需要一一輸入文件名。文件名輸入一個(gè),然后查詢一次。一共做二十次,顯然這操作起來(lái)的工作量會(huì)非常的大。如果這個(gè)文件的數(shù)目再增加的話,那么操作起來(lái)就會(huì)更加的麻煩。在for循環(huán)中可以解決這個(gè)問(wèn)題。即只需要在循環(huán)列表中將這20個(gè)文件名字輸入進(jìn)去,然后再操作語(yǔ)句中通過(guò)查詢操作在指定目錄中查找看是否有相關(guān)的文件。若有的話,將位置等信息保存到一個(gè)文件中。這就可以簡(jiǎn)化用戶的操作,只需要進(jìn)行一個(gè)for循環(huán)即可。同時(shí)還可以大幅度的縮短查詢的時(shí)間。

但是,此時(shí)遇到的一個(gè)問(wèn)題就是要在for循環(huán)的循環(huán)列表中輸入20個(gè)文件名字。為此系統(tǒng)工程師希望能夠?qū)⑦@些文件的名字保存在文件中,然后讓for循環(huán)從文件中讀取這些內(nèi)容。這即方便,而且也利于后續(xù)的調(diào)整。其實(shí)在for循環(huán)中,是支持從文件中讀取相關(guān)的列表信息。不過(guò)這需要用到一個(gè)cat命令。大家都知道,這個(gè)cat命令的用途主要是從一個(gè)文件中讀取相關(guān)的信息。如果用過(guò)管道符的系統(tǒng)工程師,一定知道,可以將某個(gè)命令的結(jié)果作為另外一個(gè)命令的參數(shù)。其實(shí),在這里用到的也是這個(gè)原理,只是不需要通過(guò)管道符來(lái)實(shí)現(xiàn)而已。具體來(lái)說(shuō),這個(gè)循環(huán)列表可以如下定義。For name in ‘cat filename.txt’(注意,由于其讀取后變?yōu)榱宋谋镜膬?nèi)容,為此需要加上單引號(hào))。當(dāng)for循環(huán)的列表很大,而且沒(méi)有規(guī)律可循的話,雖然可以直接在循環(huán)列表中一一列出列表項(xiàng),但這不是筆者所推薦的方法。筆者認(rèn)為,遇到這種情況時(shí),最好能夠向上面筆者建議的,將列表項(xiàng)保存在一個(gè)文件中。然后在for循環(huán)的循環(huán)列表中利用cat命令進(jìn)行讀取。由于此時(shí)這個(gè)文件跟程序是相對(duì)獨(dú)立的,為此以后若需要調(diào)整這個(gè)列表項(xiàng)的值,不需要修改源代碼即可以實(shí)現(xiàn)。為此者也被認(rèn)為是一種靈活性比較高的處理方式。如果列表項(xiàng)需要經(jīng)常調(diào)整,那么即使列表項(xiàng)的內(nèi)容不是很多,也可以通過(guò)這種方法來(lái)提高其靈活性。

2、 利用系統(tǒng)變量作為循環(huán)列表。

在Unix操作系統(tǒng)中,for循環(huán)最大的特色,莫過(guò)于可以利用系統(tǒng)變量來(lái)作為循環(huán)列表。如還是以查詢操作為例,用戶可能需要從指定的幾個(gè)文件夾中查找某個(gè)文件。而這幾個(gè)目錄都是有環(huán)境變量所確定的。如一個(gè)系統(tǒng)工程師剛到企業(yè),接替老的系統(tǒng)工程師的工作。此時(shí)這位系統(tǒng)工程師就需要知道Unix服務(wù)器系統(tǒng)的一些基本配置。而這其中有一項(xiàng)重要的內(nèi)容就是一些重要環(huán)境變量的設(shè)置。如安裝了Oracle數(shù)據(jù)庫(kù),就需要知道其安裝路徑。若安裝了Mail服務(wù)器,則需要知道其郵件的存儲(chǔ)位置與備份位置等等。如果一一去查看這些環(huán)境變量,工作量會(huì)比較大。如果換成是筆者的話,不會(huì)做這么沒(méi)有效率的事情。筆者的做法是,編寫一個(gè)for循環(huán),然后將這些重要的環(huán)境變量輸出到一個(gè)文件中進(jìn)行備份。這將為筆者后續(xù)的工作帶來(lái)很大的方便。如現(xiàn)在筆者想知道Oracle的安裝目錄與mail的環(huán)境變量,就可以利用下面這個(gè)循環(huán)列表來(lái)實(shí)現(xiàn)。

For varhome in $ORACLE_HOME $MAIL。

在這個(gè)for循環(huán)中,筆者采用了系統(tǒng)的環(huán)境變量作為其循環(huán)語(yǔ)句。當(dāng)系統(tǒng)工程師利用系統(tǒng)環(huán)境變量來(lái)作為循環(huán)列表時(shí),需要注意以下幾個(gè)事項(xiàng)。首先,這個(gè)列表項(xiàng)必須全部大寫。也就是說(shuō),系統(tǒng)變量必須大寫這個(gè)規(guī)則也適用于這個(gè)for循環(huán)。其次,再變量名之前必須加入$這個(gè)環(huán)境變量的符號(hào),否則的話,編譯器會(huì)無(wú)法識(shí)別。三是在多個(gè)環(huán)境變量之間,不需要加入分隔符。

3、 利用通配符作為循環(huán)列表。

有時(shí)候可能系統(tǒng)管理員有這個(gè)要求。在某個(gè)文件下有多以txt為擴(kuò)展名的文件?,F(xiàn)在系統(tǒng)工程師可能想一一統(tǒng)計(jì)這些文件的大小、創(chuàng)建日期、更新日期等等信息,然后將這些統(tǒng)計(jì)信息保存到一個(gè)文件中。或者想對(duì)這些文件進(jìn)行改名,如在原先的名字之前加上一個(gè)backup的字符串,表示這些文件是備份文件。此時(shí),如果一一對(duì)這些文件操作的話,會(huì)比較麻煩。那么比較合理的做法就是通過(guò)for循環(huán)來(lái)一次性完成這些任務(wù)。

此時(shí),如何書(shū)寫這個(gè)循環(huán)列表呢?筆者認(rèn)為比較合理、比較簡(jiǎn)便的方法就是通過(guò)通配符來(lái)實(shí)現(xiàn)。如可以利用如下語(yǔ)句來(lái)實(shí)現(xiàn):for filename in *.txt。利用這個(gè)循環(huán)列表,系統(tǒng)就會(huì)從目錄中查找所有以.txt為擴(kuò)展名的文件,然后將其為參數(shù),進(jìn)行后續(xù)的操作。如用戶需要進(jìn)行文件更名的話,則可以使用sed操作來(lái)對(duì)文件進(jìn)行重命名。在使用通配符作為循環(huán)列表中的參數(shù)時(shí),最好采用合適的通配符。因?yàn)橥ㄅ浞?或者%其含義不盡相同。如果系統(tǒng)工程師能夠了解他們其中的差異,并在這里對(duì)癥下藥,選擇合適的通配符。那么就可以起到事半功倍的效果。

在for循環(huán)中除了使用上面三種特殊的循環(huán)列表外,系統(tǒng)工程師往往還可能采用位置參數(shù)作為循環(huán)列表。如可以將命令行中的參數(shù)賦值給位置參數(shù),來(lái)實(shí)現(xiàn)一些比較復(fù)雜的功能。由于篇幅限制,筆者在這里不對(duì)這個(gè)位置參數(shù)做詳細(xì)的解釋了。如有有需要的話,筆者在以后的文章中會(huì)談到這個(gè)問(wèn)題。

標(biāo)簽: Unix系統(tǒng)
主站蜘蛛池模板: 亚洲bbbbbxxxxx精品三十七 | 欧美在线视频免费观看 | 成人精品亚洲人成在线 | 黄网站色视频免费观看w | 精品国产三级a∨在线观看 精品国产三级a在线观看 | 黄色三级视频网站 | 久久777国产线看是看精品 | 一区二区三区日韩 | 韩国成人毛片aaa黄 韩国福利一区 | 免费一级a毛片在线 | 欧美日韩国产高清一区二区三区 | 丁香狠狠色婷婷久久综合 | 国产欧美一区二区三区在线看 | 一级欧美毛片成人 | 午夜欧美日韩在线视频播放 | 碰碰久久 | 亚洲黄区 | 九九视频在线观看视频6 | 国产一区二区fc2ppv在线播放 | 国产亚洲精品一区二区 | 欧美精品色精品一区二区三区 | 久久久91精品国产一区二区 | 国产精品久久福利网站 | 久久国产免费观看精品1 | 成人亚洲精品一区 | 国产一级视频免费 | 米奇精品一区二区三区 | 国产97视频在线 | 日本三级香港三级人妇99视 | 欧美成人精品高清在线播放 | 精品视频一区二区三区 | 国产亚洲精品久久久久久 | 这里只有久久精品视频 | 亚洲天堂男人 | 国产在线爱做人成小视频 | 毛片免费全部免费观看 | 久草视频在线免费 | 天天se天天cao综合网蜜芽 | 日本午夜视频 | 国产亚洲欧美日韩在线看片 | 日韩免费a级在线观看 |