Sundy嵌入式底層開發課程筆記 shell

2021-06-27 22:57:33 字數 3405 閱讀 4391



shell

指令碼課程目標:

熟悉shell

指令碼的編寫規則

看懂複雜的

shell

指令碼重點難點:

自我查詢

shell

指令碼的高階應用#!

指定sh

解釋程式#;

注釋關於空格,

= 不加空格,運算子要加空格,如果記不住就改為:

=不加空格,其它都加。

使用者自定義變數

變數型別只支援字串,不支援整形,字元,浮點;

等號前後不要有空格

一般變數命名用全大寫

unset

命令刪除變數賦值

readonly

標定唯讀變數

export

為指定global

變數shell

的算術運算:

m=$[m + 1];m=`expt$m+1`;let m= m+1;m=$((m+1))

關於算數優先順序,如何考慮!

預定義變數

$0 與鍵入的命令列一樣,包含指令碼檔名

$1,$2,…,$9

分別寶行第乙個到第九個命令列引數

$# 命令列引數的個數

$@ 所有命令列引數

$? 前乙個命令的退出狀態

$* 所有命令列引數

$$ 正在執行的程序id號

環境變數

home

:當前使用者的主目錄

path

:shell

搜尋路徑

term

:終端程式名稱

uid

當前使用者的識別字,取值是由數字構成的字串。

pwd

當前工作目錄的絕對路徑名,該變數的取值隨

cd命令的使用而變化

ps1

主提示符,在特權使用者下,預設的主提示符是

#,在普通使用者下,預設的主提示符是$。

ps2

在shell

接收使用者輸入命令的過程中,如果使用者在輸入行的末尾輸入

」\」然後回車,或者當使用者按回車鍵

shell

判斷出使用者輸入的命令沒有結束時,就顯示這個輔助提示符,提示使用者繼續輸入命令的其餘部分,預設的輔助提示符是

>

shell

語句shell

內部命令

echo

exec

exit

read

從標準輸入讀取一行並且賦值給後面變數

read var

read var1 var2 var3

注意:當讀取數量和變數數量不一致的時候

expr

常見的算術運算+,

-,\*,

/,%注意:運算子左右兩邊都需要有空格,否則會視為字串連線

test

測試結果也常常用來作為判斷條件及結果

test 「$anser」 = 「yes」

test $num –eq 18

test –d temp

可以用代替test

,但需要左右留乙個空格,比如

[「$anser」 = 「yes」 ]

if[「$anser」 = 「yes」]

字串測試

s1 = s2

s1 ! = s2

-z s1

測試字串

s1長度是否為

0 -n s2

測試字串

s1 長度是否不為0

2) 數值測試

-eq

等於則為真

-ne

不等於則為真

-gt大於則為真

-ge

大於等於則為真

-lt小於則為真

-le小於等於則為真

3) 檔案測試(加粗為重要)

-e

檔名

如果檔案存在則為真

-r 檔名如果檔案存在且可讀則為真

-w 檔名

如果檔案存在且可寫則為真

-x 檔名

如果檔案存在且可執行則為真

-s 檔名

如果檔案存在且至少有乙個字元則為真

-d

檔名

如果檔案存在且為目錄則為真

-f 檔名

如果檔案存在且為普通檔案則為真

-c 檔名如果檔案存在且為字元型特殊檔案則為真

-b 檔名

如果檔案存在且為快特殊檔案則為真

shell

結構性語句

條件:if…then…fi

if[exp]

then [command]

fi if[exp]

then [command]

else [command]

ficase …esac

case [var] in

[param1])

[command]

… ;;

[param2])

[command]

… ;;

[paramn])

[command]

… ;;

esac

注意:var只能是字串型變數。

迴圈:for…do…done

for[var] in [list]

do [command]

done

while…do…done

while[exp]

do [command]

done

until…do…done

until[exp]

do [command]

done

break,continue

shell

函式

定義格式

function_name()

2)function function_name()

呼叫函式

[var]=`function_name[arg1,arg2…]`

echo $?

區分差別

Windows嵌入式開發系列課程

windows嵌入式開發系列課程 1 windows ce系統定製開發入門 簡單介紹windows ce作業系統的一些概況 windows ce驅動和應用程式開發工具介紹 windows ce體系結構和windows ce編譯的過程。windows嵌入式開發系列課程 2 使用embeded visu...

曉莊嵌入式開發課程日誌

學習日誌 姓名 陸旋 日期 2018年9月10日 今日學習任務 今日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 本日任務按計畫完成,今日開發 量 約200行 今日開發中出現的問題彙總 指標中 i i的具體計算先後順序 結構體中的長度計算問題。今日未解決問題 無今日開發收穫 了解了vmw...

曉莊嵌入式開發課程日誌

學習日誌 姓名 陸旋 日期 2018年9月11日 今日學習任務 學習了解資料結構,棧的特點 屬性 完成功能函式 初始化棧,進棧,出棧,判斷棧是否為空,獲取棧頂元素,清空棧 今日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 本日任務按計畫完成,今日開發 量 約250行 今日開發中出現的問題...