Shell脚本编程

Shell脚本是什么?

Shell命令按一定语法组成的文件

Shell脚本有什么用?

  1. 与批处理文件类似,可以解决日常生活中的一些重复性工作;
  2. Shell命令不多,但可以通过整合命令实现丰富的功能。

Shell命令的本质

  • 内置命令:在启动Shell时就已经将命令加载到内存(cd/pwd/ls等等),速度比较快。
  • 外部命令:一个应用程序。在启动Shell后,会自动加载环境变量PATH,当输入外部命令时,系统会自动到环境变量中对应命令的路径中找该命令,如果没找到就会报错。找到了就创建一个新进程来执行这个命令(系统先在内置命令里面找,找不到再去找外部命令
    在这里插入图片描述
    (环境变量中的路径以 : 隔开)

type可以查询shell命令的本质
在这里插入图片描述

创建一个外部命令

  • 步骤一:创建hello
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 步骤二:将hello放入PATH中的其中一条路径
    在这里插入图片描述
    (hello便变成外置命令)

Shell脚本语言和C语言一样吗?

  • 不一样
  • C语言是编译型语言需要借助编译器将源文件转化为可执行文件
  • Shell语言是解析型语言需要借助解析器(sh、bash、rbash、dash等等)去运行
    在这里插入图片描述

编写shell脚本

  • 步骤一:创建sh文件
    在这里插入图片描述
    (shell脚本的惯用后缀名为sh
  • 步骤二:编写文件内容
    在这里插入图片描述
  • 更改运行权限,并运行
    在这里插入图片描述

Shell启动方式

  • 当程序运行
  • 指定解析器运行
  • source 和 .
    在这里插入图片描述

Shell脚本语法

1、定义变量

  • variable=value (适用变量值没有空格符)
  • variable=‘value’ (单引号)
  • variable=“value”

第二种和第三种的区别在于输出时对变量的引用

  • 第三种
    在这里插入图片描述
    在这里插入图片描述
  • 第二种
    在这里插入图片描述
    在这里插入图片描述

2、使用变量

  • $variable
  • ${variable}

3、将命令结果赋值给变量

  • variable=command反引号
  • variable=$(command)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4、删除变量

  • unset
    在这里插入图片描述
    在这里插入图片描述
    (var不存在)

5、特殊变量

变量含义
$0当前脚本的文件名
$n (n >= 1)传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2
$#传递给脚本或函数的参数个数
$*传递给脚本或函数的所有参数
$@传递给脚本或函数的所有参数。当被双引号""包含时,$@ 与 $* 稍有不同
$?上个命令的退出状态或者获取函数返回值
$$当前Shell进程ID。对于Shell脚本,就是这些脚本所在进程ID
  • $n
    在这里插入图片描述
    在这里插入图片描述

  • #? (一般搭配 exit*)

    1. 退出10
      在这里插入图片描述在这里插入图片描述
    2. 退出
      在这里插入图片描述
      在这里插入图片描述
  • $$
    在这里插入图片描述
    在这里插入图片描述

6、字符串拼接

并排放
在这里插入图片描述
在这里插入图片描述

7、读取从键盘输入的数据

read在这里插入图片描述
在这里插入图片描述

8、退出当前进程

exit

9、对整数进行数学运算

(())
在这里插入图片描述
在这里插入图片描述

10、逻辑与/或

  • command1 && command2
    只有当 command1 成立后,才能执行 command2
    在这里插入图片描述
    在这里插入图片描述
  • command1 || command2
    当 command1 为真时,不会执行 command2;
    当 command1 为假时,才会执行 command2。
    在这里插入图片描述
    在这里插入图片描述

11、检测某个条件是否成立

test expression 和 [ expression ]
注意: [] 中内部的最前面和最后面都需要空格

选项作用
-eq判断数值是否相等
-ne判断数值是否不相等
-gt判断数值是否大于
-lt判断数值是否小于
-ge判断数值是否大于等于
-le判断数值是否小于等于
-z str判断字符串 str 是否为空
-n str判断字符串 str 是否为非空
= 和 ==判断字符串 str 是否相等
-d filename判断文件是否存在,并且是否为目录文件
-f filename判断文件是否存在,并且是否为普通文件
  • -z str
    在这里插入图片描述
    在这里插入图片描述
  • -d filename
    在这里插入图片描述
    在这里插入图片描述
  • -f filename

    在这里插入图片描述

12、管道

command1 | command2
管道用于连接多个命令,前一个命令的输出结果作为下一个命令的输入内容之一,前提时前一个命令必须是有效的,否则无法输入到下一个命令
在这里插入图片描述

13、if 语句

if condition
then
	statement(s)
fi

在这里插入图片描述
在这里插入图片描述

14、if else 语句

if condition 
then
	statement1
else
	statement2
fi

15、if elif else 语句

if condition1
then
	statement1
elif condition2
then 
	statement2
.......
else
	statementm

16、case in 语句 (类似C中的 switch)

case expression in
	pattern1)
		statement1
		;;
	pattern2)
		statement2
		;;
	pattern3)
		statement3
		;;
	........
	*)
		statementn
esac

在这里插入图片描述
在这里插入图片描述

17、for in 语句

for variable in value_list
do
	statements
done

value_list

  • 直接给出具体的值
    在这里插入图片描述
    在这里插入图片描述
  • 给出一个取值范围
    在这里插入图片描述
    在这里插入图片描述
  • 使用命令的执行结果、Shell 通配符
    在这里插入图片描述
    在这里插入图片描述
  • 试用特殊变量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (加了双引号后,$* 按参数输入的格式打印出输入的参数)

18、while循环

while condition
do
	statemnets
done

在这里插入图片描述
在这里插入图片描述

19、函数

function name(){
	statements
	[return value]
}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值