嵌入式课堂整理5

嵌入式Linux开发工具——shell编程(嵌入式系统开发-系统移植)
一、什么是shell?(Linux系统运维工程师)
1.命令解析器(将用户输入的命令解析,调用相应的命令可执行文件)2.脚本语言(脚本:批处理)
执行命令:/bin /sbin/环境变量
(1)作用是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
3、 Shell既是一种命令语言,又是一种程序设计语言。(1)作为命令语言,它互动式地解释和执行用户输入的命令。
(2)作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
二、shell种类
bash sh
三、程序基础
程序必须以**#!/bin/sh开始(必须放在文件的第一行):
#!用来告诉系统它后面的参数是用来执行该文件的程序。
要使脚本可执行: chmod u+x filename(可执行属性)
然后,可以通过输入: ./flename来执行脚本
在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。
第一步创建文件:vim hello.sh(可以不加后缀)
在里面写上对应的解析器
四、变量
要赋值给一个变量: 变量名=值
取出变量值可以加一个美元符号($)在变量前面
变量赋值时, "="两边都不能有空格
BASH中的语句结尾
不需要分号**
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例如:想实现2nd这个字符串
在这里插入图片描述
在这里插入图片描述
显然没有实现,原因是将and当成了变量值。修改如下:
加上花括号{},但是{}没办法去掉。
在这里插入图片描述
在这里插入图片描述
五、默认变量
$#传入脚本的命令行参数个数
$*所有命令行参数值,在各个参数值间留有空格
$0命令本身(shell 件名)
$1第一个命令行参数
$2第二个命令行参数
在命令后面跟的是命令行参数:
在这里插入图片描述
在这里插入图片描述六、局部变量
在变量首次被赋值时加上local关键字可以设置一个局部变量
在这里插入图片描述
在这里插入图片描述
七、If语句
在这里插入图片描述
在这里插入图片描述
例:
比较整数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 $b ]
注意: 1、在"[“和”]“两边都留有空格
2、在”="两边也都有空格

举例:编写一脚本,实现对两个脚本参数的比较
在这里插入图片描述
在这里插入图片描述除了判断大小,还可以判断
-e文件已存在
-f文件是普通文件
-s文件大小不为零
-d文件是一个目录
-文件对当前用户可以读取
-w文件对当前用户可以写入
-x文件对当前用户可以执行
八、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
在这里插入图片描述
在这里插入图片描述如果 for day in后面的星期被双引号起来,则被认为是同一个元素,直接输出一行
在这里插入图片描述

九、while语句
while [condition]
do
#code block
done
十、until语句
until[conditon]
do
#code block
done
while和until区别在于while为真时执行,Until为假时执行
十一、Case语句
case “$var” in
contidion1)
;;
contidion1)
;;
*)
default statements;;
esac
在这里插入图片描述
在这里插入图片描述

发布了10 篇原创文章 · 获赞 1 · 访问量 252

猜你喜欢

转载自blog.csdn.net/Noth_to_lose/article/details/105180697