亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > shell > 正文

Shell編程的10個最佳實踐

2024-09-07 17:31:43
字體:
來源:轉載
供稿:網友
       每一個在UNIX/Linux上工作的程序員可能都擅長shell腳本編程。 但大家解決問題的方式卻不盡相同,這要取決于對專業知識的掌握程度、使用命令的種類、看待問題的方式等等。對于那些處在shell腳本編程初級階段的程序員來說,遵循一些恰當的做法可以幫助你更快、更好的學習這些編程技巧。下面,我們就來討論這些能幫助你學習shell腳本編程的方法吧。


1、多動手
       一些人會先通讀整本教材后再上機練習。這種方法可能適用于一些人,但我卻不太看好它。我的建議是,先學一些最基礎的,能夠讓你開始編碼的知識就可以了。之后,動手寫一些簡單的程序。一旦你由于知識上的欠缺而不得不停止時,再回到書本上去讀你想要了解的那部分,然后繼續做你的項目。如此周而復始,不斷提高你的水平。這種邊學邊做的方法曾讓我受益良多。


2、善用命令提示符

       有時候,我們寫的腳本中有一些錯誤。我們修改錯誤,運行腳本,但系統再次報錯。并且這個改錯報錯的過程可能會發生很多次。碰到這些情況,首先需要找到有問題的行或命令,這可以通過一些調試語句來輕松做到。一旦發現這條語句,嘗試在命令提示符下執行相同的語句。如果它在命令提示符下開始正常運行,你就可以容易的推斷出它不能正常運行的原因了。可能是由于某些錯誤輸入的命令,或者是某些環境變量不匹配,或者是從不同的地方引用了某個二進制文件等等。這種方法會讓調試變得簡單易行。

3、考慮問題要全面

       現在我們來看個問題。你想到了關于某個問題的解決方案,但這個解決方案只適用于處理小型文件。可是當處理比較大的文件時,你該怎么辦?舉個例子,我們想要得到一個文件的第一行內容:

sed -n '1p' file

       這條語句當然會給出你想要的第一行內容。可是如果處理的文件包含上百萬條記錄呢?盡管上面的那條sed命令可以輸出文件的第一行內容,但是想要處理大型文件一定會帶來性能上的問題。

解決辦法:

sed -n '1p;1q' file

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


4、經常嘗試不同的方法
       你在寫腳本時碰到一個問題,然后你找到了一種獨特的解決方法。下一次你偶然又碰到類似的問題,這時,不要再用以前你用過的方法來解決。試試另外一種方法吧。如果某一天再次遇到這種情況,再試試其它方法。
例如:


if [ $? -eq 0 ]
then
echo "Success"
fi
另一種方法:


[ $? -eq 0 ] && echo "Success"
       現在你可能會明白這個博客里會有那么多以“……的不同解決方法”為題的文章了吧。所有這些文章的目的都是用來幫助訂閱這個博客的開發者開闊視野,打開思路。


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


6、經常使用內部命令
       無論碰到哪種情況,請盡量考慮使用內部命令而不是外部命令。用內部命令對你永遠都有好處。根據正在處理的輸入文件的大小,內部命令可以在性能方面為你節省很多。雖然你并不總是有這樣選擇內部命令抑或外部命令的機會,但在某些情況下,你一定能做出正確的選擇。


7、沒有必要使用cat命令
       這是我們經常在論壇里討論的話題之一。沒有必要使用cat命令指的是在有些時候,我們會發現根本沒有必要使用cat命令。有時候,使用了多余的cat命令會讓你的代碼看起來很丑陋,而且還會帶來性能上的問題。
例如:


$ cat /etc/passwd | grep guru
正確的方法應該是:


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


9、盡量避免臃腫的命令
       你正在嘗試去從一個大的文件中篩選某條信息。接下來你可能寫一大堆命令來實現這一功能??墒?,盡管你將得到正確的結果,你寫的命令卻不夠好,且晦澀難懂。因此,我們應該盡量避免這種情況發生。下面這個例子就是代碼優化的好例子。
例如:檢索用戶ID值為502的用戶名。
下面的命令不好:


$ grep 502 /etc/passwd | cut -d: -f1
這條命令也不夠好:


$ grep 502 /etc/passwd | awk -F ":" '{print $1}'
這才是一條好的命令:


$ awk -F ":" '$3==502{print $1}' /etc/passwd
正如以上示例,用一條簡單的awk命令就可以完成檢索任務。


10、別吝嗇添加注釋
       寫了一份腳本,一兩個星期后,你再次打開腳本文件,如果沒有注釋在里面的話,你可能會花上很多時間才能理解這些代碼。雖然代碼是我們自己寫的,但這依舊會浪費我們很多的時間。腳本是用來節省時間的,因此,我們沒有理由浪費時間去理解這些用來節省時間的文件。所以,請養成在腳本中添加注釋的好習慣。 這些注釋不必很詳細,能讓自己或別人讀懂就行。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品情侣自拍| 国产精品美女主播在线观看纯欲| 68精品国产免费久久久久久婷婷| 日韩中文在线不卡| 97视频国产在线| 亚洲成成品网站| 亚洲男人天堂网| 日韩在线播放视频| 欧美黄色片免费观看| 国产精品老女人精品视频| 国产精品久久久久久久av大片| 亚洲a级在线播放观看| 国产精品高潮呻吟久久av野狼| 亚洲区bt下载| 91最新在线免费观看| 国产suv精品一区二区三区88区| 欧美自拍视频在线| zzjj国产精品一区二区| 成人写真视频福利网| 中文字幕精品一区久久久久| 一区二区亚洲精品国产| 久热爱精品视频线路一| 91影院在线免费观看视频| 国产精品视频地址| 亚洲欧美第一页| 国产亚洲精品日韩| 久久久欧美精品| 亚洲精品国产品国语在线| 欧美电影免费观看电视剧大全| 久久精品成人欧美大片古装| 色综合久久88色综合天天看泰| 日本亚洲欧洲色| 欧美电影在线播放| 欧美日韩视频免费播放| 97精品国产97久久久久久免费| 中文字幕视频一区二区在线有码| 国产精品久久一| 日韩精品日韩在线观看| 久久亚洲国产精品| 欧美裸体xxxxx| 91国在线精品国内播放| 色偷偷偷综合中文字幕;dd| 亚洲欧美国产日韩天堂区| 国产97在线|日韩| 福利一区视频在线观看| 亚洲老板91色精品久久| 久久全国免费视频| 日韩中文字幕在线免费观看| 欧美激情乱人伦一区| 国产精品ⅴa在线观看h| 国产精品免费一区二区三区都可以| 黄色成人在线播放| 中国日韩欧美久久久久久久久| 人人做人人澡人人爽欧美| 亚洲人在线观看| 亚洲激情视频网| 亚洲成人黄色在线观看| 一区二区av在线| 久久久精品免费| 136fldh精品导航福利| 国产欧美精品久久久| 日韩免费观看av| 日韩成人在线电影网| 欧美日韩在线看| 69av在线视频| 国产成人在线一区| 日韩精品在线免费播放| 亚洲国产精品热久久| 亚洲综合在线播放| 成人情趣片在线观看免费| 日韩av最新在线观看| 亚洲天堂av在线播放| 成人国产亚洲精品a区天堂华泰| 欧美日韩国产精品| 国产精品久久在线观看| 欧美激情一级二级| 欧美日韩高清区| 中文字幕自拍vr一区二区三区| 成人激情视频在线播放| 国产精品户外野外| 国产欧美中文字幕| 国产一区二区三区毛片| 亚洲日韩欧美视频一区| 日韩欧美成人网| 亚洲欧美日本伦理| 日韩免费视频在线观看| 亚洲一级片在线看| 18一19gay欧美视频网站| 亚洲一区亚洲二区亚洲三区| 亚洲国产成人精品一区二区| 国产精品久久网| 欧美激情网站在线观看| 欧美最猛性xxxxx亚洲精品| 日韩精品福利网站| 在线观看视频亚洲| 国产精品欧美激情在线播放| 欧美视频中文在线看| 国产一区二区三区毛片| 日韩免费高清在线观看| 日韩欧美在线国产| 欧美一区二区三区免费观看| 91免费在线视频| 亚洲欧美日韩成人| 亚州欧美日韩中文视频| 欧美电影免费观看高清完整| 亚洲另类xxxx| 国产日韩欧美在线观看| 欧美大片欧美激情性色a∨久久| 亚洲深夜福利视频| 最近中文字幕2019免费| 91av视频在线免费观看| 国产乱肥老妇国产一区二| 国产不卡视频在线| 成人性生交大片免费看视频直播| 国语自产精品视频在线看一大j8| 国产精品一区二区三区久久| 免费不卡欧美自拍视频| 九色精品免费永久在线| 亚洲精品一区在线观看香蕉| 国产精品91视频| 欧美日韩午夜视频在线观看| 成人在线精品视频| 久久久亚洲影院你懂的| 国产精品一久久香蕉国产线看观看| 成人福利在线观看| 欧美电影第一页| 精品爽片免费看久久| 日韩乱码在线视频| 午夜精品久久久久久99热软件| 97香蕉超级碰碰久久免费软件| 国产成人avxxxxx在线看| 精品美女久久久久久免费| 久久精品免费播放| 国产精品高清网站| 成人激情视频在线观看| 国产日韩欧美影视| 91精品国产91久久久久久不卡| 久久久爽爽爽美女图片| 亚洲欧美第一页| 国产精品久久久久久av| 日韩av在线网址| 精品成人乱色一区二区| 亚洲激情自拍图| 国产精品福利小视频| 精品久久久国产精品999| 68精品国产免费久久久久久婷婷| 亚洲欧美国产精品久久久久久久| 国产欧亚日韩视频| 欧美日韩国产一区二区三区| 中文字幕一区二区三区电影| 中文字幕欧美日韩在线| 亚洲三级黄色在线观看| 亚洲欧洲第一视频| 欧美日韩不卡合集视频| 九色精品免费永久在线| 亚洲国产精品yw在线观看| 久久久噜噜噜久久久| 17婷婷久久www| 日韩在线视频线视频免费网站| 日韩av高清不卡| 欧美在线观看网址综合| 国产精品在线看| 亚洲精品一区久久久久久| 少妇精69xxtheporn|