嵌入式課程設計總結(五)

2021-10-23 01:49:15 字數 3036 閱讀 8875

自動生成: cmake autotool

嵌入式linux開發工具-shell程式設計(指令碼:批處理) linux系統運維工程師(嵌入式系統開發–系統移植)

(將使用者輸入的命令解析,呼叫相應的命令的可執行檔案)

命令:可執行檔案

在這裡插入描述

變數 if for while until case 函式 函式傳參 函式返回值 鍵盤輸入read

底層嵌入式開發: shell命令拼裝、看懂shell

確切一點說,shell就是乙個命令列直譯器,它的作用就是遵循一定的語法將輸入的命令加以解釋並傳給系統。它為使用者提供了乙個向linux傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動、掛起、停止甚至是編寫一些程式。

shell既是一種命令語言,又是一種程式語言。作為命令語言,它互動式地解釋和執行使用者輸入的命令;作為程式語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支。它雖然不是 linux系統核心的一部分,但它呼叫了系統核心的大部分功能來執行程式、建立文件並以並行的方式協調各個程式的執行。因此,對於使用者來說,shell是最重要的實用程式,深入了解和熟練掌握shell的特性極其使用方法,是用好linux系統的關鍵。可以說,shell使用的熟練程度反映了使用者對 linux使用的熟練程度。

這種通訊可以以互動方式(從鍵盤輸入,並且可以立即得到響應),或者以shell script(非互動)方式執行。shell script是放在檔案中的一串shell和作業系統命令,它們可以被 重複使用。 本質上,shell script是命令列命令簡單的組合到乙個檔案裡面。

程式必須以下面的行開始(必須方在檔案的第一行):

#!/bin/sh

#!用來告訴系統它後面的引數是用來執行該檔案的程式。

要使指令碼可執行:

chmod +x filename

然後通過輸入: ./filename 來執行您的指令碼

(在進行shell程式設計時,以#開頭的句子表示注釋,直到這一行的結束。我們真誠地建議您在程式中使用注釋。如果您使用了注釋,那麼即使相當長的時間內沒有使用該指令碼,你也能在很短的時間內明白該指令碼的作用及工作原理。)

在其他程式語言中必須使用變數。在shell程式設計中,所有的變數都由字串組成,並且不需要對變數進行宣告。要賦值給乙個變數,可以這樣寫:

變數名=值

取出變數值可以加乙個美元符號($)在變數前面

變數賦值時,「=兩邊都不能有空格

bash中的語句結尾不需要分號

helloworld

#!/bin/sh

#對變數賦值:

a=「hello world」

現在列印變數a的內容:

echo 「a is:」

echo $a

在編輯器中輸入以上內容,然後將其儲存為乙個檔案helloworld。之後執行chmod +x helloworld

最後輸入./ helloworld執行該指令碼。

這個指令碼將會輸出:

a is:

hello world

有時候變數名很容易和其他名字混淆,比如:

s13:

num=2

echo 「this is the $numnd」

思考:輸出?why?

num=2

echo 「this is the katex parse error: expected 『}』, got 『eof』 at end of input: … 「this is the nd」

這將列印: 「this is the 2nd」

$#:傳入指令碼的命令列引數個數

$*:所有命令列引數值,在各個引數值間留有空格

$0:命令本身(shell檔名)

$1:第乙個命令列引數

$2:第二個命令列引數

在變數首次被複製時加上local關鍵字可以什麼乙個區域性變數,

例s3:

#!/bin/bash

hello=「var1「

echo $hello

function func1

func1

echo $hello

輸出:?

if [expression]

then

#code block

fiif [expression]

then

#code block

else

#code block

fiif [expression]

then

#code block

else if [expression]

then

#code block

else

#code block

fifi

例:比較整數a和整數b是否相等:if[ $a = $b ]

比較整數a是否大於整數b:if[ $a –gt $b ]

比較字串a和b是否相等: if[ $a = $b ]

判斷字串a是否為空:if[ -z $a ]

比較整數變數a是否大於b:if[ $a –gt katex parse error: expected 『eof』, got 『#』 at position 137: …對當前使用者可以執行 例s5: #̲!/bin/sh folde…folder」 ] && echo 「can read folder「[−f"

folder「[−f"folder」 ] || echo 「this is not file」

for迴圈與c語言中有所不同,在bash中for迴圈的基本結構是:

for var in [list]

do#code block

done

其中var是迴圈控制變數, [list]是var需要遍歷的乙個集合,do/done包含了迴圈體,相當於c語言中的大括號。另外do和for被寫在同一行,必須在do前面加上「;」如: for var in [list];do

*說明:*變數是在當前迴圈使用,用來代替當前列表的物件。列表是迴圈中所要操作的物件,可以是字串,檔名等。

嵌入式課程設計總結(二)

學習內容 linux介紹 使用linux操作 命令 linux開發工具 目標 會用!夠用!vm虛擬機器 通過軟體的方法模擬pc 為什麼不使用雙系統?嵌入式開發與核心相互,會導致系統崩潰 linux發行版 發行給使用者使用的版本 redhat centos7 企業版 ununtu 16.10 18.0...

嵌入式課程設計總結(三)

vim gcc gdb make vim 文字編輯器 學會使用和如何配置vim gcc 編輯器 學會製作動態庫和靜態庫及使用和區別 gdb 偵錯程式 設定斷點 單步執行 除錯記憶體錯誤 make 工程管理器 編寫makefile檔案 vim 功能最強大文字編輯器 擺脫滑鼠 vi vim im 命令模...

嵌入式課程設計總結(六)

嵌入式linux開發工具 gcc make shell 嵌入式linux系統開發 通過核心提供的服務實現相應功能 c語言程式設計 無os語法 嵌入式linux c開發 會看使用說明書 linux系統構成 使用者空間 核心空間 分為兩個空間作用保護核心的訪問安全保護核心的訪問安全 使用者空間不能隨便訪...