日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:shell腳本學(xué)習(xí)從入門到精通

嵌入式學(xué)習(xí)筆記:shell腳本學(xué)習(xí)從入門到精通 時間:2018-09-12      來源:未知

shell腳本會了嗎,不會的看這里,教你一一來學(xué),還有實例哦

1.shell腳本

定義:多條命令按順序執(zhí)行,就是shell腳本

例如:vim hello.sh

兩種執(zhí)行的方式:

1.直接執(zhí)行:bash hello.sh

2.給當前用戶或所有用戶加上可執(zhí)行權(quán)限,再執(zhí)行:./hello.sh

chmod u+x hello.sh //對當前用戶增加執(zhí)行權(quán)限

1.2 shell變量

1.2.1. 賦值:變量名=值

(1) 變量不用定義,直接賦值即可, 賦值時,賦值號前后不能有空格

(2) 賦值給變量的數(shù)據(jù)當字符串處理

注意:shell里邊變量名提議用大寫的

例子:DATE=`date`

1.2.2. 取值

$變量名或${變量名}

注意:取變量值的時候,需要給美金符號($)

1.2.3. 刪除變量值:unset 變量名

例子:unset DATE

實例:給IFPO賦值一個命令, 然后echo輸出命令

1.3命令行參數(shù)變量

命令行:腳本啟動時,shell程序會自動賦值,在腳本中可以直接取值:

$0 腳本名

$1 - $9 腳本參數(shù)

$* 所有的命令行參數(shù)

$# 命令行參數(shù)個數(shù)

$? 前一個命令的結(jié)果

$$ 當前shell腳本進程ID

0 正常退出 //這里可以判斷一下ls -l +文件名存在的時候,執(zhí)行完之后的結(jié)果

1 異常退出 //這里可以判斷一下ls -l +文件名不存在的時候,執(zhí)行完之后的結(jié)果

同樣可以有參數(shù):

實例:

1.4系統(tǒng)環(huán)境變量

系統(tǒng)shell賦值的變量,shell腳本中可以直接使用:

$PATH 執(zhí)行命令時,未指定命令的絕對路徑,從此變量指定的路徑中搜索

$HOME 指定用戶主目錄:/home/ubuntu

追加環(huán)境變量路徑:

導(dǎo)出環(huán)境變量:在子處調(diào)用父中變量

補充:注釋:以#打頭的行

1.5 read

用處:讀取一行用戶輸入

read VAR(定義變量)

echo $VAR(輸出變量值)

實例:

補充:指定腳本解析器:#!/bin/bash

echo $SHELL:查看當前自己環(huán)境用的bash

1.6算術(shù)計算命令(expr.sh)

expr 數(shù)學(xué)表達式

數(shù)學(xué)表達式中支持的運算符:+, -, \* , /, %

注意:乘法(因為*有特殊含義,需要轉(zhuǎn)義)

實例:

注意:運算符前后都有空格,不加空格,會把我們的值理解成字符串

等號前后不需要空格

補充:其他算法

(1)let

例如:var=1

let "var+=1"

echo $var

注意:a)經(jīng)測試let幾乎支持所有的運算符,在網(wǎng)上看到一篇文章說“let不支持++、--和逗號、(、)”,但經(jīng)測試自加、自減、以及括號的優(yōu)先級都得到了很好的支持

b)方冪運算應(yīng)使用“**”

c)參數(shù)在表達式中直接訪問,不必加$

d)一般情況下算數(shù)表達式可以不加雙引號,但是若表達式中有bash中的關(guān)鍵字則需加上

e)let后的表達式只能進行整數(shù)運算

(2)使用(())

var=1

((var+=1))

echo $var

輸出結(jié)果為2

注意:(())的使用方法與let完全相同

(3)使用$[]

var=1

var=$[$var+1]

echo $var

輸出結(jié)果位2

注意:a)$[]將中括號內(nèi)的表達式作為數(shù)學(xué)運算先計算結(jié)果再輸出

b)對$[]中的變量進行訪問時前面需要加$

c)$[]支持的運算符與let相同,但也只支持整數(shù)運算

(4)使用expr

var=1

var=`expr $var + 1`

echo $var

輸出結(jié)果為2

注意:a)expr后的表達式個符號間需用空格隔開

b)expr支持的操作符有: |、&、<、<=、=、!=、>=、>、+、-、*、/、%

c)expr支持的操作符中所在使用時需用\進行轉(zhuǎn)義的有:|、&、<、<=、>=、>*

e)expr同樣只支持整數(shù)運算

1.7測試命令

test 表達式

等價于:[ 表達式 ]

注意: [ 后面一定要有空格, ] 前面一定要有空格

test命令沒有輸出, 只有程序退出狀態(tài)

表達式(注意: 運算符合操作數(shù)之間有空格):

1. 字符串比較

str1 = str2 相等(注意空格)

str1 != str2 不等

-z str 為空

-n str 不空

2. 整數(shù)比較

a -eq b 相等

-ne 不相等

-ge 大于等于

-le 小于等于

-gt 大于

-lt 小于

3. 文件測試

-d file 目錄? (file即為要測試的文件)

-e file 存在文件或目錄?

-f file 普通文件?

-r file 存在可讀?

-w file 存在可寫?

-x file 存在可執(zhí)行?

-s file 存在長度不為0

f1 -nt f2 f1 比 f2新?

f1 -ot f2 f1 比 f2舊?

4. 邏輯運算

a -a b 且

a -o b 或

注意;0表示真 1表示假

測試語句:echo $? //輸出上一次的返回結(jié)果

實例

 

1.8 if語句

1.8.1. if

語法

if [命令1] 相當于if()

then {

命令列表 語句

fi }

執(zhí)行流程:(1) 執(zhí)行 命令1

(2) 如果為真($? 為 0), 執(zhí)行 命令列表

5.8.2 if ... else

語法

if 命令1

then

命令列表1

else

命令列表2

fi

執(zhí)行流程:(1) 執(zhí)行 命令1

(2) 如果為真($? 為 0), 執(zhí)行命令列表1

如果為假, 執(zhí)行命令列表2

1.8.3 if ...elif...elif...

語法

if 命令1

then

命令列表1

elif 命令2

then

命令列表2

else

命令列表*

fi

執(zhí)行流程:(1) 執(zhí)行 命令1

(2) 如果為真, 執(zhí)行 命令列表1

(3) 如果為假, 執(zhí)行 命令2

(4) 如果為真, 執(zhí)行 命令列表2

如果為假, 命令列表*

實例:

1.9 case語句

1.9.1語法

case 值(結(jié)果為字符串的表達式或變量) in

模式1)(類似于通配符)

命令

;;(類似于break)

模式2)

命令

...

;;

*)//默認模式

命令

...

;;

Esac

注意:模式可以包含 *, ?, [...]等文件名匹配模式(模式就是正則表達式)

例如:y | yes | Y | Yes)

實例:

 

1.10 while

1.10.1 語法

while [ 關(guān)系表達式 ]

do

命令列表

done

1.10.2 流程

(1) 執(zhí)行 [ 關(guān)系表達式 ]

(2) 結(jié)果為真, 執(zhí)行 命令列表后,再執(zhí)行(1)

假 結(jié)束 while語句

實例:

1.11 continue

1.11.1語法

continue n

n 為整數(shù)

1.11.2 執(zhí)行流程

結(jié)束n層的本次循環(huán)

實例:計算奇數(shù)和

 

1.12 for

1.12.1. 語法

for 變量 in 字符串列表

do

命令列表

done

注意:in 后面到列表省略,表示使用腳本參數(shù)做為字符串列表

1.12.2 執(zhí)行流程

變量按順序取字符串列表中到值,每個值執(zhí)行一次命令列表

實例:

 

1.13 break

1.13.1 語法

break n(n 為整數(shù))

1.13.2 執(zhí)行流程

結(jié)束n層循環(huán)

實例:

 

1.14 函數(shù)

1.14.1 定義

function 函數(shù)名()

{

local 變量賦值

命令列表

...

return 值

}

注意:function 關(guān)鍵字可以沒有,但是函數(shù)名()必須有

函數(shù)可以用$0 - $9的變量,從函數(shù)外獲取值

return 命令可以返回值給$?變量

local申明的變量作用范圍為函數(shù)內(nèi)部

2. 調(diào)用

OUT=`function_name 參數(shù)1 參數(shù)2`

function_name 參數(shù)1 參數(shù)2

定義在前,調(diào)用在后,且必須在同一個腳本中

OUT變量可以獲取到函數(shù)的輸出

實例:

 

注意:在文件系統(tǒng)中,禁止將自己的目錄下的所有文件拷貝到自己目錄下的某個文件

上一篇:嵌入式學(xué)習(xí)筆記:linux軟件包安裝程序介紹

下一篇:嵌入式學(xué)習(xí)筆記:C高級函數(shù)快速學(xué)

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 法政先锋2| 孤战迷城电视剧剧情介绍| 局外人电影| 《窃视者》电影免费观看美国| 重启之蛇骨佛蜕免费观看完整版| 感恩节英语祝福| 长靴靴虐视频vk| 花式特殊符号可复制| 战斧骨电影| 偷偷藏不住演员表| 贝加尔湖畔钢琴谱| 成年人看的小视频| 狗年龄| 釜山国际电影节| 赵霏儿| bb88| 台湾电影网| 男男大尺度无删减床戏| 87版七仙女台湾| 罗马之战| 红海行动2在线观看| 彭丹最惊艳三部电影在线观看| 朱敏荷《豺狼来了》| 叶子淳| 刷子李课堂笔记| 大地资源中文字幕第3页| cctv17农业农村频道在线直播| 西界歌词| 电影继父| 性的秘密| 小班安全开学第一课| 男同志gay免费视频| 莫美林| 陕西卫视节目表| 女生操| 辰巳ゆい| 姐姐的秘密电影| 情侣自拍偷拍| 倪妮| 山上的小屋 残雪原文| 姜洋|