百度上的解釋是:腳本(Script)是壹種批處理文件的延伸,是壹種純文本保存的程序,壹般來說的計算機腳本程序是確定的壹系列控制計算機進行運算操作動作的組合,在其中可以實現壹定的邏輯分支等。不知道妳能不能看懂,反正我開始的時候真是壹知半解。
鳥哥私房菜的解釋是:shell script是利用 shell 的功能所寫的壹個"程序",這個程序是使用純文本文件,將壹些shell的語法與命令(含外部命令)寫在裏面,搭配正則表達式、管道命令與數據流重定向等功能,以達到我們所想要的處理的目的。不明覺厲,好像更看不懂了···
Jude 的簡單粗暴大白話解釋是:腳本就是Linux中很多命令按照壹定規則的組合,以實現某個特定的功能。Linux中有很多簡單的命令,往往只是進行了簡單的對話,比如 cd 就是進入到某個目錄,簡單直接。但是如果我想進入某個目錄A,然後在目錄A中創建目錄B,再在目錄B中創建文本C呢?當然可以壹步壹步操作,如果想要壹步到位呢,那就可以用腳本,把三個命令寫在壹起,壹起執行。好像有點啰嗦···
或者從英語的角度去理解,腳本的對應英文是Script,而這個單詞的中文釋義中還有劇本的意思。劇本就好理解了啊,劇本就是導演(生信工程師)基於某個主旨(要實現的目標)按照壹定的手法(規則)所寫的壹個故事。不管是哪個演員,都得按照劇本演。所以,學好英語對於生信也是有幫助的~
按照腳本的復雜程度可以分為:
這個無需多說,其實就是若幹個簡單命令的順序排列,執行腳本後會按照命令的前後關系從前往後壹壹執行。
相對於簡單的基本腳本,結構化的命令腳本可以施加邏輯流程控制,從而改變程序(命令)執行的順序。基本腳本中的命令就是從上往下執行,但是結構化的命令腳本可以根據邏輯判斷重復或者跳過某些命令。
常用的結構化命令(語句)有:
後面還有什麽嵌套循環啊啥的,不過我覺得上面的7中命令學到家了,應該可以應付大部分在生信分析裏面的應用了。
記得高中的時候,物理老師(也是班主任)在給我們講解習題時有個有意思的套路:不管什麽難題現在下面寫個"答:",以示自己解決問題的決心,也是壹種正向的心理暗示。腳本編寫也是有套路的,不過總的來說還是比較簡單。
對於簡單的腳本(超級簡單的那種),直接幾個命令連在壹起即可,中間用";"隔開。
對於更長更復雜的腳本,壹般需要創建壹個文本,並在裏面編輯。這就涉及到了文本編輯器,比較常用和簡單的壹般有nano和vim,實在很簡單,規則也容易理解,教程隨手可得,不多說。
比如用vim創建了壹個腳本之後,具體的語法(套路):
ok,腳本寫完了,怎麽讓腳本開始工作呢?這有涉及到之前講過的環境變量和相對路徑、絕對路徑了。方法有三:
就這麽多吧,應該有點感覺到了,剩下的就是狂練狂練了~