树莓派linux内核交叉编译shell脚本.zip
Shell:一般我们是用图形界面和命令去控制计算机,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),由于安全、复杂、繁琐等原因,用户不能直接接触
文章目录 Shell:一般我们是用图形界面和命令去控制计算机,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),由于安全、复杂、繁琐等原因,用户不能直接接触内核,需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,内核和用户之间就多了一层“中间代理”,Shell 其实就是一种脚本语言,也是一个可以用来连接内核和用户的软件,我们编写完源码后不用编译,直接运行源码即可。 常用的Shell:bash由 GNU 组织开发,sh 是 UNIX 上的标准 shell,是第一个流行的 Shell,bash保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。现在sh 已经基本被 bash 代替,bash是sh的扩展补充,但是也有些是不兼容的,大多数情况下区别不大,特殊场景可以使用 bash 代替 sh。 在ubuntu下unix脚本,上图是我们打开的终端,这里输入的命令就是我们shell的命令,一般$表示的是普通用户,而#表示的是超级用户(root) 1、第一个脚本程序: 在终端创建一个.sh文件,vi test.sh 第一行,#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,用的是哪种shell,后面的/bin/bash就是指明了解释器的具体位置。 第二行#是注释行,用来解释说明,当然#!是特殊的,不在此类。 第三行在是终端输出 hello,is me! 执行shell脚本: ./test.sh: ./表示当前目录,执行./test.sh会说明权限不够,不能执行。需要改变文件的权限:chmod 777 test.sh,就能执行 . ./test.sh: 在不想改变权限的时候,测试脚本是不是能够正常使用。. 临时增加权限。 2、shell获取字符串长度:
结果: 3、shell变量: 在bash shell中,每一个变量的值都是字符串, 当然也可以用declare 关键字显式定义变量的类型,在赋值的时候等号两边不能有空格,如:str=1 ,str=‘1’ ,str=“1”,变量名必须有字母、下划线、数字组成,开头必须字母或者下划线,不能用shell。 4、引用shell变量: 使用shell变量在变量前面加一个$,而标准的是 &{},目的是在一长串字符中可以识别出这个变量,而不会引起误会,如下:
结果: 5、shell变量的赋值、修改、删除: ? a)、shell变量的赋值:
可以从结果看出不加引号和加双引号的结果是相同的,而单引号是原样输出变量后面赋值的内容。 b、shell变量的修改、删除:
5、shell特殊变量: $0当前脚本的文件名或者解释器。 $n(n≥1) 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 ?稍有不同,* 稍有不同,?稍有不同,*的所有参数是一个数据,而$@一个参数就是一份数据 上个命令的退出状态,或函数的返回值 $$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。 **脚本:**如果参数个数太多,达到或者超过了 10 个,那么就得用${n}的形式来接收了,例如 ${10}、${11}
函数:如果参数个数太多,达到或者超过了 10 个,那么就得用${n}的形式来接收了,例如 ${10}、${11}
$?:上一个命令的退出状态,或者返回值:
$?在shell函数中的应用:
6、shell中字符串的拼接:
7、字符串的截取
8、shell中的数组: bash shell 中只支持一维,而不支持二维,定义的形式:array=(n1 n2 n3) ,数组名等号两边不能有空格,数组变量的值用空格隔开表示不同的值,一个数组变量的值可以用数字或者字符串不同的形式组成:array=(1 2 ab) 。 Shell 数组的长度不是固定的,定义之后还可以增加元素,如:array[3]=cd ;就在最后增加了一个元素。 也不用逐个赋值;如:array=([2]=ab);但他的长度是1 调用数组:
获取shell数组的元素个数或者shell数组里字符串的长度:${#array[*]}、${#array[@]}、${#array[4]}
数组的拼接:利用${array[*]}、${array[@]}:
shell数组元素的删除:unset
9、shell中条件判断if: a)、if单分支: -eq 等于,如:if [ “$a” -eq “$b” ] -ne 不等于,如:if [ “$a” -ne “$b” ] -gt 大于,如:if [ “$a” -gt “$b” ] -ge 大于等于,如:if [ “$a” -ge “$b” ] -lt 小于,如:if [ “$a” -lt “$b” ] -le 小于等于,如:if [ “$a” -le “$b” ]
b、双分支if:
3、iif多分支:
10、shell中的 case语句:
11、shell中的 for循环: a)、for循环形式1:
b)、for循环形式2:与c语言的形式类似
12、shell中的 while循环:
13、shell中的 until循环:
14、shell循环中的break和continue:
15、shell中的函数: function 函数名(){ … }
(编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |