Android和Linux操作系統(tǒng)在過(guò)去幾年變得非常流行。由于它們的開(kāi)源性質(zhì),成本是合理的,值得慶幸的是,大量的工程師已經(jīng)加入到將這些操作系統(tǒng)移植到幾乎所有可以想象的平臺(tái)的努力中來(lái)。它們的廣泛使用使得嵌入式開(kāi)發(fā)人員幾乎不可避免地會(huì)在某個(gè)時(shí)候投入開(kāi)發(fā)基于這些系統(tǒng)的系統(tǒng)。
在Linux環(huán)境中進(jìn)行開(kāi)發(fā)時(shí),最有用的工具之一是使用shell腳本。腳本可以幫助設(shè)置環(huán)境變量,執(zhí)行重復(fù)和復(fù)雜的任務(wù),并確保將錯(cuò)誤保持在最低限度。由于腳本是從終端內(nèi)部運(yùn)行的,任何可以從終端手動(dòng)執(zhí)行的命令或功能也可以自動(dòng)化!
創(chuàng)建腳本非常直接,它可以通過(guò)打開(kāi)諸如 gedit 之類的編輯器或通過(guò)諸如 VI 之類的終端編輯器來(lái)創(chuàng)建。 最常見(jiàn)的腳本類型是 bash 腳本。 這些腳本通常與 .sh 擴(kuò)展名相關(guān)聯(lián),但根本不需要包含擴(kuò)展名! 任何腳本的頂部都應(yīng)包含在第一行 #!/bin/bash. 這告訴了應(yīng)該使用什么解釋器來(lái)運(yùn)行腳本。
除此之外,可以自定義腳本以滿足嵌入式開(kāi)發(fā)人員的需求。一個(gè)好的第一個(gè)腳本,就像任何程序一樣,是創(chuàng)建一個(gè)“Hello World”腳本。除了解釋器說(shuō)明符之外,clear 用于清除任何先前消息的終端,而 echo 用于輸出文本。
創(chuàng)建腳本后,可以使用終端運(yùn)行它。 但是,立即將腳本作為 ./scripts.sh 運(yùn)行通常會(huì)導(dǎo)致錯(cuò)誤。 此錯(cuò)誤是由于文件權(quán)限引起的。 這可以通過(guò)首先輸入命令 chmod +x script_name.sh 來(lái)解決。 這將添加腳本以具有可執(zhí)行權(quán)限。 然后可以通過(guò)鍵入 ./script_name.sh 來(lái)運(yùn)行該腳本。
現(xiàn)在已經(jīng)運(yùn)行了第一個(gè)腳本,真正的問(wèn)題歸結(jié)為在腳本中可以做什么? 可以運(yùn)行哪些命令和功能? 答案是可以從終端運(yùn)行或執(zhí)行的任何東西! 腳本可以使用 cd 來(lái)更改目錄。 也許腳本需要?jiǎng)?chuàng)建一個(gè)目錄并移入其中。 不是問(wèn)題! 該腳本可以包含 mkdir 命令,然后可以使用 cd 遍歷新目錄。 嵌入式開(kāi)發(fā)人員甚至可能希望將創(chuàng)建的目錄添加到路徑變量中。 這可以使用導(dǎo)出命令來(lái)完成。
為嵌入式系統(tǒng)開(kāi)發(fā)軟件時(shí),有時(shí)可能需要模塊化腳本。也許只需要編譯內(nèi)核,有時(shí)需要編譯內(nèi)核,然后鏈接一些外部庫(kù)??梢詣?chuàng)建腳本來(lái)處理這些單獨(dú)的項(xiàng)目,然后創(chuàng)建一個(gè)腳本來(lái)根據(jù)構(gòu)建需要調(diào)用這些單獨(dú)的腳本!這是一個(gè)相對(duì)直截了當(dāng)?shù)倪^(guò)程,它匯集了到目前為止已經(jīng)展示的所有示例。
就像在常規(guī)的計(jì)算機(jī)程序中一樣,可能需要使用變量來(lái)跟蹤數(shù)據(jù)。無(wú)論這是字符串還是數(shù)字?jǐn)?shù)據(jù),腳本都可以像標(biāo)準(zhǔn)應(yīng)用程序一樣訪問(wèn)變量。在腳本環(huán)境中,就像在任何常規(guī)計(jì)算機(jī)語(yǔ)言中一樣,對(duì)變量名也有一些要求。這些規(guī)則與c語(yǔ)言的規(guī)則非常相似。首先,變量必須以字母開(kāi)頭。其次,變量不能包含空格,而是應(yīng)該使用下劃線來(lái)橋接名稱。第三,變量名不應(yīng)該是bash解釋器理解的關(guān)鍵字或保留字。這將導(dǎo)致混亂和不一致或不正確的結(jié)果。最后,變量名不應(yīng)包含任何標(biāo)點(diǎn)符號(hào)。遵循這些規(guī)則將確保嵌入式開(kāi)發(fā)人員享受無(wú)bug的腳本編寫體驗(yàn)。
現(xiàn)在創(chuàng)建一個(gè)變量非常簡(jiǎn)單。與C #不同,這里沒(méi)有類型說(shuō)明符。在腳本中,可以通過(guò)命名變量并將其設(shè)置為一個(gè)值來(lái)聲明變量。也可以從腳本中訪問(wèn)系統(tǒng)變量和信息。例如,可以使用$HOSTNAME來(lái)訪問(wèn)計(jì)算機(jī)主機(jī)名。還可以存儲(chǔ)日期和當(dāng)前用戶信息。
有了這些信息,嵌入式開(kāi)發(fā)人員現(xiàn)在可以對(duì)開(kāi)始自動(dòng)化軟件開(kāi)發(fā)過(guò)程所需的必要命令有一個(gè)基本的了解。雖然這里提供的信息是一個(gè)好的開(kāi)始,但請(qǐng)留意“Shell Scripting 102”,它將詳細(xì)介紹如何控制腳本執(zhí)行流程和接受用戶信息。
途傲科技為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站建設(shè)、微信H5、微信小程序,多商戶平臺(tái),多級(jí)分銷系統(tǒng),APP開(kāi)發(fā),手機(jī)網(wǎng)站,HTML5多端自適應(yīng)網(wǎng)站,營(yíng)銷型企業(yè)站建設(shè),及對(duì)技術(shù)人才的培養(yǎng)等都積累與沉淀了豐富的心得和實(shí)戰(zhàn)經(jīng)驗(yàn)。
如果您有想法,可以將需求提交給我們【免費(fèi)提交需求,獲取解決方案】
免責(zé)聲明:文章部分內(nèi)容收集于互聯(lián)網(wǎng),不代表本站的觀點(diǎn)和立場(chǎng),如有侵權(quán)請(qǐng)聯(lián)系刪除。