国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句)

這篇具有很好參考價值的文章主要介紹了lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1 Shell腳本概述

1.1Shell腳本概述

?Shell腳本是利用 shell 的功能所寫的一個程序。這個程序是使用純文本文件,將一些 shell 的語法與命令(含外部命令)寫在里面,搭配正則表達(dá)式、管道命令與數(shù)據(jù)流重定向等功能

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

1.2Shell腳本編寫流程

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

?第一個Shell腳本文件

#!/bin/bash

echo "hello world"
執(zhí)行方式
        bash test.sh
        source  test.sh
        ./test.sh

2?Shell腳本變量

2.1變量介紹

變量來源于數(shù)學(xué),是計算機(jī)語言中能儲存計算結(jié)果或能表示值的抽象概念。 ?

變量可以通過變量名訪問。在指令式語言中,變量通常是可變的

2.2變量的作用

用來存放系統(tǒng)和用戶需要使用的特定參數(shù)(值) ?

變量名:使用固定的名稱,由系統(tǒng)預(yù)設(shè)或用戶定義 ?

變量值:能夠根據(jù)用戶設(shè)置、系統(tǒng)環(huán)境的變化而變化

2.3變量的命名要求

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

2.4變量的分類

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

2.4.1 用戶自定義變量

變量可以再終端中使用,也可以代碼中使用

在shell編程中通常使用全大寫變量,方便識別
$ COUNT=1
變量的調(diào)用:在變量前加$ 
$ echo $COUNT



Linux Shell/bash從右向左賦值
$Y=y
$ X=$Y
$ echo $X 
y 


使用unset命令刪除變量的賦值 
$ Z=hello 
$ echo $Z 
hello 
$ unset Z 
$ echo $Z 

取值?

雙引號: 允許通過$符號引用其他變量值(不加引號也一樣echo $COUNT echo "$COUNT")

????????弱引用,其中的變量引用會被替換為變量值

單引號: 禁止引用其他變量值,$視為普通字符

????????強(qiáng)引用,其中的變量引用不會被替換為變量值,而保持源字符串

反撇號: 命令替換,提取命令執(zhí)行后的輸出結(jié)果,``和$(…)作用相同

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

數(shù)組

#array數(shù)組
a=(1 2 3 4 5)
echo $a:默認(rèn)顯示數(shù)組a的第一個元素
echo ${a[0]} :顯示數(shù)組中第一個元素,以此類推
echo ${a[-1]}: 顯示數(shù)組中最后一個元素
echo ${a[*]} 和echo ${a[@]} :顯示數(shù)組中所有元素
echo ${#a[@]} :顯示數(shù)組中元素的個數(shù)
echo ${a[@]:起始元素id:元素個數(shù)]} :顯示數(shù)組中以起始元素為首的指定個數(shù)的元素(注意:這里起始元素id不能為負(fù)值
unset a[n] 刪除數(shù)組中的第n個元素
unset a 刪除a這個數(shù)組

2.4.2?只讀變量

變量值不允許修改(重新賦值)的情況

無法使用 unset刪除

最快方法重啟

readonly

readonly COUNT=3

2.4.3 位置變量和預(yù)定義變量


$0    與鍵入的命令行一樣,包含腳本文件名
$1,$2,……$9 ${10} 分別包含第一個到第十個命令行參數(shù)
$#     包含命令行參數(shù)的個數(shù)
$@     包含所有命令行參數(shù):“$1,$2,……$9”
$*     包含所有命令行參數(shù),是一個整體:“$1,$2,……$9”
$?     包含前一個命令的退出狀態(tài)
$$     包含正在執(zhí)行進(jìn)程的ID號

?示例:

#!/bin/bash
echo $0
echo $1
echo $2
echo $3
echo $#
執(zhí)行
./test.sh 1 2 3 4 5
輸出
./test.sh
1
2
3
5   //一共傳入了5個

?lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

2.4.4 環(huán)境變量

$USER 表示用戶名稱
$HOME 表示用戶的宿主目錄
$LANG 表示語言和字符集
$PWD 表示當(dāng)前所在工作目錄
$PATH 表示可執(zhí)行用戶程序的默認(rèn)路徑
export可以將變量指定為全局變量

示例

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

3 Shell語句

3.1 Shell程序

Shell 程序由零或多條shell語句構(gòu)成。 shell語句包括三類:

說明性語句 ?功能性語句 ?結(jié)構(gòu)性語句。

3.2 說明性語句

說明性語句(注釋行)

以#號開始到該行結(jié)束,不被解釋執(zhí)行 注釋行可以出現(xiàn)在程序中的任何位置,既可以單獨(dú)占用一行, 也可以接在執(zhí)行語句的后面. 以#號開始到所在行的行尾部分,都不被解釋執(zhí)行. 例如:

#! /bin/sh 
# 
# 本程序說明
#
command_1 
command_2                  # command_2的語句說明
……
# 下面程序段的說明
command_m
……
command_n                  # command_n語句的說明
……

3.3 功能性語句

read從標(biāo)準(zhǔn)輸入讀入一行, 并賦值給后面的變量,其語法為:

read ?var  //  把讀入的數(shù)據(jù)全部賦給var

示例:?

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

把讀入行中的第一個單詞(word)賦給var1, 第二個單詞賦給var2, ……把其余所有的詞賦給最后一個變量. 如果執(zhí)行read語句時標(biāo)準(zhǔn)輸入無數(shù)據(jù), 則程序在此停留等侯, 直到數(shù)據(jù)的到來或被終止運(yùn)行。? -t 跟隨等待事件 -p 跟隨終端的提示信息 -s輸入不回顯

示例:

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

算術(shù)運(yùn)算命令expr主要用于進(jìn)行簡單的整數(shù)運(yùn)算,包括加(+)、減(-)、乘(\*)、整除(/)和求模(%)等操作。例如:
  $ expr  12  +  5  \*  3
  27
  $ expr  3  -  8  /  2
  -1
  $ num=9
  $ sum=`expr  $num  \*  6 `
  $ echo  $sum
  54

示例

?這里+前后需要空格lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

test語句可測試三種對象: ? ? ? ? ? 字符串 ? ? 整數(shù) ? ? 文件屬性

條件成立輸出0? 條件不成立輸出1

每種測試對象都有若干測試操作符?

字符串測試
s1 = s2   	測試兩個字符串的內(nèi)容是否完全一樣
s1 != s2	測試兩個字符串的內(nèi)容是否有差異
-z s1 	             測試s1 字符串的長度是否為0
-n s1 	             測試s1 字符串的長度是否不為0

示例:

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux?注意 加上雙引號減少錯誤,否則會顯示0

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

整數(shù)測試 
a -eq b 	    測試a 與b 是否相等
a -ne b		    測試a 與b 是否不相等
a -gt b 		測試a 是否大于b
a -ge b 		測試a 是否大于等于b
a -lt b 		測試a 是否小于b
a -le b 		測試a 是否小于等于b

示例:

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

文件測試
-e name    測試一個文件是否存在
-d name    測試name 是否為一個目錄
-f name     測試name 是否為普通文件
-L name    測試name 是否為符號鏈接
-r name     測試name 文件是否存在且為可讀
-w name   測試name 文件是否存在且為可寫
-x name    測試name 文件是否存在且為可執(zhí)行
-s name    測試name 文件是否存在且其長度不為0
f1 -nt f2    測試文件f1 是否比文件f2 更新
f1 -ot f2    測試文件f1 是否比文件f2 更舊

示例:

lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句),嵌入式開發(fā),linux

3.4 結(jié)構(gòu)性語句

結(jié)構(gòu)性語句主要根據(jù)程序的運(yùn)行狀態(tài)、輸入數(shù)據(jù)、變量的取值、控制信號以及運(yùn)行時間等因素來控制程序的運(yùn)行流程。 主要包括:

條件測試語句(兩路分支)

多路分支語句

循環(huán)語句

循環(huán)控制語句等文章來源地址http://www.zghlxwxcb.cn/news/detail-693682.html

到了這里,關(guān)于lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • lv7 嵌入式開發(fā)-網(wǎng)絡(luò)編程開發(fā) 13 UNIX域套接字

    目錄 1 UNIX 域流式套接字 2 UNIX 域數(shù)據(jù)報套接字 UNIX 域流式套接字(UNIX domain stream socket)是一種在同一臺主機(jī)上的進(jìn)程之間進(jìn)行通信的機(jī)制。它不依賴于網(wǎng)絡(luò)協(xié)議棧,而是使用文件系統(tǒng)作為通信的基礎(chǔ)。 UNIX 域流式套接字提供可靠的、雙向的、面向連接的通信方式。與傳統(tǒng)的

    2024年02月07日
    瀏覽(21)
  • lv6 嵌入式開發(fā)-Flappy bird項目(信號機(jī)制、定時器功能實現(xiàn))

    lv6 嵌入式開發(fā)-Flappy bird項目(信號機(jī)制、定時器功能實現(xiàn))

    目錄 1 信號(signal) 2 設(shè)置信號響應(yīng)方式 – signal 3 設(shè)置定時器 4 示例 問題: getch()阻塞獲取鍵盤按鍵輸入, 怎么操作才能不影響小鳥下落和管道移動? getch如果阻塞,下面的程序都是無法執(zhí)行。通過信號機(jī)制方式實現(xiàn)。 在Linux中,軟中斷信號(signal,簡稱為信號)是在軟件層

    2024年02月07日
    瀏覽(82)
  • lv7 嵌入式開發(fā)-網(wǎng)絡(luò)編程開發(fā) 03 TCP/IP與五層體系結(jié)構(gòu)

    lv7 嵌入式開發(fā)-網(wǎng)絡(luò)編程開發(fā) 03 TCP/IP與五層體系結(jié)構(gòu)

    目錄 1 TCP/IP協(xié)議族體系結(jié)構(gòu) 1.1?OSI與TCP/IP 1.2?TCP/IP 的體系結(jié)構(gòu)? 1.3?TCP/IP 體系結(jié)構(gòu)的另一種表示方法 1.4?沙漏計時器形狀的 TCP/IP 協(xié)議族 2 五層協(xié)議的體系結(jié)構(gòu) 2.1 各層的主要功能? 2.2 互聯(lián)網(wǎng)中客戶-服務(wù)器工作方式 2.3?同時為多個客戶進(jìn)程提供服務(wù)? 3 練習(xí) 是事實上的國際標(biāo)

    2024年02月07日
    瀏覽(25)
  • 嵌入式Linux:如何進(jìn)行嵌入式Linux開發(fā)?

    目錄 1、裸機(jī)開發(fā) 2、SDK開發(fā) 3、驅(qū)動開發(fā) 3.1、字符設(shè)備驅(qū)動 3.2、塊設(shè)備驅(qū)動 3.3、網(wǎng)絡(luò)設(shè)備驅(qū)動 4、應(yīng)用開發(fā) 嵌入式Linux開發(fā)主要有四種方式:裸機(jī)開發(fā)、SDK開發(fā)、驅(qū)動開發(fā)和應(yīng)用開發(fā)。 裸機(jī)開發(fā)通常指在沒有操作系統(tǒng)支持的環(huán)境中直接在硬件上運(yùn)行程序的開發(fā)。這種開發(fā)方

    2024年01月25日
    瀏覽(30)
  • 關(guān)于嵌入式開發(fā)的一些信息匯總:嵌入式C開發(fā)人員、嵌入式系統(tǒng)Linux

    關(guān)于嵌入式開發(fā)的一些信息匯總:嵌入式C開發(fā)人員、嵌入式系統(tǒng)Linux

    這篇文章是關(guān)于嵌入式開發(fā)的一些基本信息,供想入行的人參考。有一些作者本人的想法,以及來自外網(wǎng)的大拿的文章翻譯而來,原文鏈接在此Learning Linux for embedded systems,再次感謝,支持原創(chuàng)。 普通C開發(fā)人員和嵌入式C開發(fā)人員之間的 基本區(qū)別在于 ,因為嵌入式C程序被設(shè)

    2024年02月03日
    瀏覽(129)
  • 嵌入式開發(fā):單片機(jī)嵌入式Linux學(xué)習(xí)路徑

    嵌入式開發(fā):單片機(jī)嵌入式Linux學(xué)習(xí)路徑

    SOC(System on a Chip)的本質(zhì)區(qū)別在于架構(gòu)和功能。低端SOC如基于Cortex-M架構(gòu)的芯片,如STM32和NXP LPC1xxx系列,不具備MMU(Memory Management Unit),適用于輕量級實時操作系統(tǒng)如uCOS和FreeRTOS。高端SOC如基于Cortex-A架構(gòu)的芯片,如三星、高通、飛卡、全志和瑞芯微等,具備MMU,支持虛擬內(nèi)

    2024年02月15日
    瀏覽(38)
  • 嵌入式Linux開發(fā)教程匯總

    野火:https://doc.embedfire.com/products/link/zh/latest/linux/index.html 正點(diǎn)原子:http://47.111.11.73/docs/boards/arm-linux/index.html 百問網(wǎng):http://download.100ask.net/books/Linux/ELADCM1/index.html 百問網(wǎng):https://space.bilibili.com/275908810/channel/seriesdetail?sid=1714177 野火:https://space.bilibili.com/356820657/channel/seriesdeta

    2024年02月10日
    瀏覽(97)
  • 嵌入式Linux驅(qū)動開發(fā)之點(diǎn)燈

    嵌入式Linux驅(qū)動開發(fā)之點(diǎn)燈

    ? 使用驅(qū)動開發(fā)的方式點(diǎn)亮一個LED燈。看看兩者有啥區(qū)別不? 首先查看原理圖,看看我們的板子上的LED等接在哪一個IO口上面。 好了,看原理圖我們知道LED燈接在芯片的GPIO1的第三個引腳上面,也就是GPIO1_IO03。 先掌握三個名詞 CCM: Clock Controller Module (時鐘控制模塊) IOMUXC : I

    2024年02月01日
    瀏覽(28)
  • 嵌入式Linux開發(fā)-USB驅(qū)動

    嵌入式Linux開發(fā)-USB驅(qū)動

    哥們馬上就要被裁了,總得整理一下技術(shù)方面的積累,準(zhǔn)備開始下一輪的面試和找工作之旅了。。。。 通用串行總線(USB)是主機(jī)和外圍設(shè)備之間的一種連接。 從拓?fù)渖蟻砜?,是一顆由幾個點(diǎn)對點(diǎn)的連接構(gòu)建而成的樹。這些連接是連接設(shè)備和集線器(hub)的四線電纜(底線、電源線

    2024年02月20日
    瀏覽(26)
  • 嵌入式開發(fā)之linux內(nèi)核移植

    嵌入式開發(fā)之linux內(nèi)核移植

    目錄 ?前言 一、下載內(nèi)核源碼 1.1 下載linux-3.0.1 1.2 解壓源碼文件 二、 內(nèi)核添加yaffs2文件系統(tǒng)支持 2.1 下載yaffs2 2.2 內(nèi)核添加yaffs2文件補(bǔ)丁 三、配置開發(fā)板 3.1 修改機(jī)器ID 3.2 添加開發(fā)板初始化文件 3.3 配置NandFalsh 3.3.1 添加NandFlash設(shè)備 3.3.2 添加NandFlash驅(qū)動 3.3 修改Kconfig(支持

    2024年02月07日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包