嵌入式系统知识点 第五周 3.24:

嵌入式系统知识点 第五周 3.24:

回顾:
嵌入式Linux开发工具:-gcc 、gdb、make
学习目标:了解gdb
学习目标:编写makefile (.c --.o) – Linux内核 – makefile
作业:总控Makefile、功能目录Makefile、scripts的Makefile
嵌入式Linux环境的使用
嵌入式Linux开发工具
嵌入式Linux系统开发(文件、进程、线程、网络)20
嵌入式系统移植8h
嵌入式驱动开发8h
新内容:
自动生成: CMake autotool
嵌入式Linux开发工具-shell编程(脚本:批处理) Linux系统运维工程师(嵌入式系统开发–系统移植)
shell:
1.命令解析器 (将用户输入的命令解析,调用相应的命令的可执行文件)
2.脚本语言
命令:可执行文件
在这里插入图片描述
变量 if for while until case 函数 函数传参 函数返回值 键盘输入read
底层嵌入式开发: shell命令拼装、看懂shell
3.Shell是什么呢?
确切一点说,Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
4.Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。
Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。因此,对于用户来说,Shell是最重要的实用程序,深入了解和熟练掌握Shell的特性极其使用方法,是用好Linux系统的关键。可以说,Shell使用的熟练程度反映了用户对 Linux使用的熟练程度。
5.shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被 重复使用。 本质上,shell script是命令行命令简单的组合到一个文件里面。程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
#!用来告诉系统它后面的参数是用来执行该文件的程序。
要使脚本可执行:
chmod +x filename
然后,您可以通过输入: ./filename 来执行您的脚本
在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理
6.变量:
在其他编程语言中您必须使用变量。在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 {num}nd”
这将打印: “this is the 2nd”
7.默认变量
$#:传入脚本的命令行参数个数
$*:所有命令行参数值,在各个参数值间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数
8.局部变量
在变量首次被复制时加上local关键字可以什么一个局部变量, 例S3:
#!/bin/bash
hello=“var1“
echo $hello
function func1 {
local hello=“var2”
echo $hello
}
func1
echo $hello
输出:?
9.If语句
If [expression]
then
#code block
fi
If [expression]
then
#code block
else
#code block
fi
If [expression]
then
#code block
else if [expression]
then
#code block
else
#code block
fi
fi
例:
比较整数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 f o l d e r [ f " folder“ [ -f " folder” ] || echo “this is not file”
11.For语句
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
S7:
#!/bin/bash
for day in Sun Mon Tue Wed Thu Fri Sat
do
echo $day
done
如果列表被包含在一对双引号中,则被认为是一个元素,如S8:
#!/bin/bash
for day in "Sun Mon Tue Wed Thu Fri Sat“
do
echo d a y d o n e f o r d a y day done 上面的例子中,在for所在那行变量day是没有加” ”符号的,而在循环体内,echo所在行变量day必须加“KaTeX parse error: Expected 'EOF', got '#' at position 51: …condition] do #̲code block Done…var” in
contidion1)
;;
contidion1)
;;
*)
default statements;;
esac
S12:
#!/bin/bash
echo “Hit a key, then hit return.“
read Keypress
case “$Keypress” in
[A-Z] ) echo “Uppercase letter”;;
[a-z] ) echo “Lowercase letter”;;
[0-9] ) echo “Digit”;;
* ) echo “Punctuation, whitespace, or other”;;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了14 篇原创文章 · 获赞 0 · 访问量 527

猜你喜欢

转载自blog.csdn.net/qq_43230552/article/details/105075742