每一個在UNIX/Linux上工作的程序員可能都擅長shell腳本編程。但大家解決問題的方式卻不盡相同,這要取決於對專業知識的掌握程度、使用命令 的種類、看待問題的方式等等。對於那些處在shell腳本編程初級階段的程序員來說,遵循一些恰當的做法可以幫助你更快、更好的學習這些編程技巧。下面, 我們就來討論這些能幫助你學習shell腳本編程的方法吧。
1、多動手
你想學習 shell腳本編程,這很不錯。於是你拿了一本書開始學習。一些人會首先通讀整本教材後再上機練習。這種方法可能適用於一些人,但我卻不太看好它。我的建 議是,僅僅學一些最基礎的能夠讓你開始編碼的知識就可以了。之後,動手寫一些簡單的程序吧。一旦你由於知識上的欠缺而不得不停止時,再回到書本上去讀你想 要了解的那部分,然後繼續做你的項目。如此周而復始,不斷提高你的水平。這種邊學邊做的方法曾讓我受益良多。
2、善用命令提示符
有 時候,我們寫的腳本中有一些錯誤。我們修改錯誤,運行腳本,但系統再次報錯。並且這個改錯報錯的過程可能會發生很多次。碰到這些情況,首先需要找到有問題 的行或命令,這可以通過一些調試語句來輕松做到。一旦發現這條語句,嘗試在命令提示符下執行相同的語句。如果它在命令提示符下開始正常運行,你就可以容易 的推斷出它不能正常運行的原因了。可能是由於某些錯誤輸入的命令,或者是某些環境變量不匹配,或者是從不同的地方引用了某個二進制文件等等。這種方法會讓 調試變得簡單易行。
3、考慮問題要全面
現在我們來看個問題。你想到了關於某個問題的解決方案,但這個解決方案只適用於處理小型文件。可是當處理比較大的文件時,你該怎麼辦?舉個例子,我們想要得到一個文件的第一行內容:
代碼 sed -n '1p' file
這條語句當然會給出你想要的第一行內容。可是如果處理的文件包含上百萬條記錄呢?盡管上面的那條sed命令可以輸出文件的第一行內容,但是想要處理大型文件一定會帶來性能上的問題。 【Linux公社 http://www.linuxidc.com 】
解決辦法:
代碼 sed -n '1p;1q' file
這條命令將只輸出第一行,同時退出程序。
4、經常嘗試不同的方法
你在寫腳本時碰到一個問題,然後你找到了一種獨特的解決方法。下一次你偶然又碰到類似的問題,這時,不要再用以前你用過的方法來解決。試試另外一種方法吧。如果某一天再次遇到這種情況,再試試其它方法。
例如:
代碼 if [ $? -eq 0 ]then echo "Success"fi
另一種方法:
代碼 [ $? -eq 0 ] && echo "Success"
現在你可能會明白這個博客裡會有那麼多以“……的不同解決方法”為題的文章了吧。所有這些文章的目的都是用來幫助訂閱這個博客的開發者開闊視野,打開思路。
5、快速編碼
腳本可以節省我們的時間,提高生產力。可是,難道我們花在寫腳本和測試上的時間還少嗎?我們想寫一個腳本,於是打開一個文件,寫下代碼,保存文件,之後運行腳本,系統報錯,我們再打開文件修改、保存、運行……在這個過程中會花費很多時間。在此前的一篇題為《如何快速寫shell腳本》的文章裡,你可以學會如何編寫腳本和測試正在運行中的腳本,而不用再回顧命令提示符。這些方法可以加快編碼的速度。當我寫腳本的時候,我總是使用這些方法。而且我可以很肯定的說,它們幫我節約了不少時間。