嵌入式开发——常用shell编程知识点

shell介绍

1.shell是操作系统的终端命令行,可以理解为人机交互的一种方式,软件系统提供给用户操作的命令行界面。
2.编写shell的语言叫shell语言,也叫脚本语言,shell语言是一类语言而不是某一种特定的语言,常用的shell语言:sh、bash、csh、ksh、perl、python等。在Linux下常用的脚本语言有sh、bash。
3.shell脚本的运行机制:解释运行。解释运行和编译运行时两个相对的概念,解释运行就是解释一句运行一句;编译运行是要把代码全部编译成可执行程序才能运行。所以shell脚本不用编译,shell解析器会逐行的去解释shell程序代码,而C/C++则要先编译才能执行。
4.脚本程序文件一般以.sh结尾;

怎么执行shell程序

1."./xx.sh":和运行二进制可执行程序方法一样。这样运行shell要求shell程序必须具有可执行权限。chmod a+x xx.sh来添加可执行权限。
2.“source xx.sh”:source是linux的一个命令,这个命令就是用来执行脚本程序的。这样运行不需要脚本具有可执行权限。
3.“bash xx.sh”:bash是一个脚本程序解释器,本质上是一个可执行程序。这样执行相当于我们执行了bash程序,然后把xx.sh作为argv[1]传给他运行。

shell程序的编写规范

#!/bin/sh
# 解释该脚本的功能,
#接下来就是脚本程序
*********
.
.
.
*********

解析:第一行以#!开头,后面加上pathname。这行话的意思指定shell程序执行时被哪个解释器执行。

shell中的变量定义和引用

1.变量定义:shell语言是弱类型语言,定义变量时不需要指定类型,变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的。
2.变量的解引用:假设有一个变量是var,解引用的方式有2种。(1) $var;(2)${var}

shell中无引用、单引号、双引号和反引号的区别

无引用:就是字符串既不用单引号也不要双引号括起来,这样可以直接进行赋值,但是不能输出转义字符;
单引号:将字符串用单引号括起来,会按照字面意思去解析字符串,就算在单引号里引用变量也是不起作用的;
双引号:可以在双引号括起来的字符串中引用变量,或者输出转义字符。
反引号:反引号就是ESC键下面和"~"一起的那个键的另一个值,用单引号括起来的内容表示这是一条命令,按照linux中的命令去执行得到结果。比如:在shell程序中`pwd`,表示执行pwd命令,得到当前路径,而不是把pwd简单的当做一个字符串处理。
备注:反引号仍表示命令替换
\$表示$的字面值 : 输出$符号
\`表示`的字面值 : 输出`符号
\"表示"的字面值 :输出"符号
\\表示\的字面值 :输出\符号

shell中的选择分支结构

if [ 表达式 ]; then
	程序语句
else
	程序语句
fi
# 注意[]里面前后都有空格,不能省略。

判断文件是否存在 :"-f"
判断目录是否存在 :"-d"
判断字符串是否相等:(“str1” = “str2”),注意用一个等号而不是两个
判断数字是否相等:相等(-eq)、大于(-gt)、小于(-lt)、大于等于(-ge)、小于等于(-le)。(eq就是equal,gt就是greater than,lt就是less than,ge就是greater or equal,le就是less or equal)
判断字符串是否为空:"-z"
逻辑或:"-o"

shell中的while结构

	while read line
	do
		xxx															   
	done < /sbin/conf
	
	效果:每次从/sbin/conf中读取一行,保存在line变量中。
	补充:读取文件是按行缓冲的,如果最后一行有效数据没有换行符,会导致最后一行读取成功,
	但是没法输出,缓存在line变量里,但是运行接下来的解析。

shell中的for结构

	for i in `seq 1 5`
	do
		echo "$i"
	done

解析:seq 1 5:是取值的范围;i:是暂存本次循环变量值;效果:本循环结构的功能就是i依次取1、2、3、4、5来进行循环;

shell中的case语句

	case $option in
		1)
			xxx
		;;
		a)
			xxx
		;;
		s)
			xxx
		;;
		r)
			xxx
		;;
	esac

shell程序的传参

参考博客《shell程序传参和main函数传参的区别》

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值