欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
關(guān)于shell腳本編程的10個(gè)最佳實(shí)踐

關(guān)于shell腳本編程的10個(gè)最佳實(shí)踐

2012-04-06 08:42 | 2620次閱讀 | 來(lái)源:unix-school 【已有7條評論】發(fā)表評論

關(guān)鍵詞:shell,編程,實(shí)踐 | 作者:unix-school | 收藏這篇資訊

每一個(gè)在UNIX/Linux上工作的程序員可能都擅長(cháng)shell腳本編程。但大家解決問(wèn)題的方式卻不盡相同,這要取決于對專(zhuān)業(yè)知識的掌握程度、使用命令的種類(lèi)、看待問(wèn)題的方式等等。對于那些處在shell腳本編程初級階段的程序員來(lái)說(shuō),遵循一些恰當的做法可以幫助你更快、更好的學(xué)習這些編程技巧。下面,我們就來(lái)討論這些能幫助你學(xué)習shell腳本編程的方法吧。

1.多動(dòng)手

你想學(xué)習shell腳本編程,這很不錯。于是你拿了一本書(shū)開(kāi)始學(xué)習。一些人會(huì )首先通讀整本教材后再上機練習。這種方法可能適用于一些人,但我卻不太看好它。我的建議是,僅僅學(xué)一些最基礎的能夠讓你開(kāi)始編碼的知識就可以了。之后,動(dòng)手寫(xiě)一些簡(jiǎn)單的程序吧。一旦你由于知識上的欠缺而不得不停止時(shí),再回到書(shū)本上去讀你想要了解的那部分,然后繼續做你的項目。如此周而復始,不斷提高你的水平。這種邊學(xué)邊做的方法曾讓我受益良多。

2.善用命令提示符

有時(shí)候,我們寫(xiě)的腳本中有一些錯誤。我們修改錯誤,運行腳本,但系統再次報錯。并且這個(gè)改錯報錯的過(guò)程可能會(huì )發(fā)生很多次。碰到這些情況,首先需要找到有問(wèn)題的行或命令,這可以通過(guò)一些調試語(yǔ)句來(lái)輕松做到。一旦發(fā)現這條語(yǔ)句,嘗試在命令提示符下執行相同的語(yǔ)句。如果它在命令提示符下開(kāi)始正常運行,你就可以容易的推斷出它不能正常運行的原因了??赡苁怯捎谀承╁e誤輸入的命令,或者是某些環(huán)境變量不匹配,或者是從不同的地方引用了某個(gè)二進(jìn)制文件等等。這種方法會(huì )讓調試變得簡(jiǎn)單易行。

3.考慮問(wèn)題要全面

現在我們來(lái)看個(gè)問(wèn)題。你想到了關(guān)于某個(gè)問(wèn)題的解決方案,但這個(gè)解決方案只適用于處理小型文件??墒钱斕幚肀容^大的文件時(shí),你該怎么辦?舉個(gè)例子,我們想要得到一個(gè)文件的第一行內容:

  1. sed -n '1p' file   

這條語(yǔ)句當然會(huì )給出你想要的第一行內容??墒侨绻幚淼奈募习偃f(wàn)條記錄呢?盡管上面的那條sed命令可以輸出文件的第一行內容,但是想要處理大型文件一定會(huì )帶來(lái)性能上的問(wèn)題。

解決辦法:

  1. sed -n '1p;1q' file   

這條命令將只輸出第一行,同時(shí)退出程序。

4.經(jīng)常嘗試不同的方法

你在寫(xiě)腳本時(shí)碰到一個(gè)問(wèn)題,然后你找到了一種獨特的解決方法。下一次你偶然又碰到類(lèi)似的問(wèn)題,這時(shí),不要再用以前你用過(guò)的方法來(lái)解決。試試另外一種方法吧。如果某一天再次遇到這種情況,再試試其它方法。

例如:

  1. if [ $? -eq 0 ]    
  2. then    
  3. echo "Success"    
  4. fi    

另一種方法:

  1. [ $? -eq 0 ] && echo "Success"   

現在你可能會(huì )明白這個(gè)博客里會(huì )有那么多以“……的不同解決方法”為題的文章了吧。所有這些文章的目的都是用來(lái)幫助訂閱這個(gè)博客的開(kāi)發(fā)者開(kāi)闊視野,打開(kāi)思路。

5.快速編碼

腳本可以節省我們的時(shí)間,提高生產(chǎn)力??墒?,難道我們花在寫(xiě)腳本和測試上的時(shí)間還少嗎?我們想寫(xiě)一個(gè)腳本,于是打開(kāi)一個(gè)文件,寫(xiě)下代碼,保存文件,之后運行腳本,系統報錯,我們再打開(kāi)文件修改、保存、運行……在這個(gè)過(guò)程中會(huì )花費很多時(shí)間。在此前的一篇題為《如何快速寫(xiě)shell腳本》的文章里,你可以學(xué)會(huì )如何編寫(xiě)腳本和測試正在運行中的腳本,而不用再回顧命令提示符。這些方法可以加快編碼的速度。當我寫(xiě)腳本的時(shí)候,我總是使用這些方法。而且我可以很肯定的說(shuō),它們幫我節約了不少時(shí)間。

6.經(jīng)常使用內部命令

無(wú)論碰到哪種情況,請盡量考慮使用內部命令而不是外部命令。在此前的一篇題為《內部命令和外部命令》的文章里,我們可以看到二者間的差異。用內部命令對你永遠都有好處。根據正在處理的輸入文件的大小,內部命令可以在性能方面為你節省很多。雖然你并不總是有這樣選擇內部命令抑或外部命令的機會(huì ),但在某些情況下,你一定能做出正確的選擇。

7.沒(méi)有必要使用cat命令

這是我們經(jīng)常在論壇里討論的話(huà)題之一。沒(méi)有必要使用cat命令指的是在有些時(shí)候,我們會(huì )發(fā)現根本沒(méi)有必要使用cat命令。有時(shí)候,使用了多余的cat命令會(huì )讓你的代碼看起來(lái)很丑陋,而且還會(huì )帶來(lái)性能上的問(wèn)題。

例如:

  1. $ cat /etc/passwd | grep guru   

正確的方法應該是:

  1. $ grep guru /etc/passwd   

8.仔細閱讀錯誤信息

程序員常犯的一個(gè)錯誤是:當我們敲入的命令報錯后,我們中的大多數人只是對錯誤信息一瞥而過(guò),而不會(huì )去認真的讀一讀。很多時(shí)候,錯誤信息里就包含了解決辦法。更重要的是,有時(shí)候我們修改了某個(gè)錯誤并再次運行后,系統依舊會(huì )報錯。然后我們再次修改,但系統再次報錯。這可能會(huì )持續很長(cháng)時(shí)間。但實(shí)際上,舊的錯誤可能已經(jīng)被糾正,只是由于出現了其它一些新錯誤才導致系統再次報錯。而我們依舊在懷疑為什么修改好的代碼依然不能正常運行。因此,請你養成仔細閱讀錯誤信息的習慣。

9.盡量避免臃腫的命令

你正在嘗試去從一個(gè)大的文件中篩選某條信息。接下來(lái)你可能寫(xiě)一大堆命令來(lái)實(shí)現這一功能??墒?,盡管你將得到正確的結果,你寫(xiě)的命令卻不夠好,且晦澀難懂。因此,我們應該盡量避免這種情況發(fā)生。下面這個(gè)例子就是代碼優(yōu)化的好例子。

例如:檢索用戶(hù)ID值為502的用戶(hù)名。

下面的命令不好:

  1. $ grep 502 /etc/passwd | cut -d: -f1   

這條命令也不夠好:

  1. $ grep 502 /etc/passwd | awk -F":" '{print $1}'   

這才是一條好的命令:

  1. $ awk -F":" '$3==502{print $1}' /etc/passwd   

正如以上示例,用一條簡(jiǎn)單的awk命令就可以完成檢索任務(wù)。

10.別吝嗇添加注釋

你寫(xiě)了一份腳本。一兩個(gè)星期后,你再次打開(kāi)腳本文件,如果沒(méi)有注釋在里面的話(huà),你可能會(huì )花上很多時(shí)間才能理解這些代碼。雖然代碼是我們自己寫(xiě)的,但這依舊會(huì )浪費我們很多的時(shí)間。腳本是用來(lái)節省時(shí)間的,因此,我們沒(méi)有理由浪費時(shí)間去理解這些用來(lái)節省時(shí)間的文件。所以,請養成在腳本中添加注釋的好習慣。這些注釋不必很詳細,能讓自己或別人讀懂就行。

文章出自:unix-school

譯文出自:ITeye


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux系統shell腳本編程(一)
linux下shell的工作原理
Solaris中默認Shell的修改以及命令行補全的設置 - 墨竹淡香 - IXPUB技術(shù)...
bash腳本中取文件路徑(文件名)
Shell 腳本面試問(wèn)題大全
linux中的shell腳本編程基本知識
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久