shell编程
一、shell脚本
把分散执行的若干shell命令配合shell环境支持的流程控制指令而构成的一个具备可执行权限的文件。
A)shell命令
B)shell解释器
C)可执行器
二、shell解释器
一种特定的具备解释执行shell的命令的特殊程序
三、shell程序
a)最简单的shell脚本程序
#!/bin/bash
#这是注释,其解释作用,不影响脚本的执行效果
shell命令
注意:
1.在shell脚本中,需要制定解释该shell脚本的shell解释器;
2.shell脚本文件的扩展名使用.sh
3.该shell脚本需要解释权限 chmod a+x hahaha.sh
a+x 是给所有人加上可执行权限,包括所有者,所属组,和其他人
o+x 只是给其他人加上可执行权限
b)shell变量:用来存放一定数据的名字代表
Shell变量名:就是一个代号(字符串),仅仅只表示名字本身
Shell变量的值:使用($变量名)来表示变量存储的具体数据
使用实例:
$SELECT=yes
echo $SELECT
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
c)条件测试
1.判断与数字之间的关系
1. -eq(等于) -ne(不等于)
test $NUM -eq 10
2. -ge(大于等于) -gt(大于)
test $NUM -ge 10
3. -le(小于等于) -lt(小于)
test $NUM -lt 10
echo -n 表示尾部换行
2.判断与字符串之间的关系
1. -n -z
Test -z $STRING
2. = !=
test $STRING = yes
3.判断与文件之间的关系
1. -d path:判断该文件是否为目录
test -d ~/linux/
- -e path:判断文件是否存在
test -e ~/hello.c
- -f path:判断该文件是否是普通文件
test -f ~/test
注意:test指令测试成功返回0,测试失败返回非0
d) 条件分支语句
- 条件执行
if 条件表达式
then
执行语句
fi
- 分两种情况执行
if 条件表达式
then
执行语句1
else
执行语句2
fi
- 分多钟情况执行
if 条件表达式1
then
执行语句1
elif 条件表达2
then
执行语句2
else
执行语句n
fi
e) 循环语句
- for
- While
练习:编写一个shell脚本,从位置参数上传入三个值,分别是区间的下限m、上限n、步长s,在脚本内求该该区间[m,n]内,在该步长s变化下的所有整数的和。
参考代码如下:
-o是逻辑或,一边为真,结果为真,否则为假
分两种情况执行
If 条件表达式
then
执行语句1
else
执行语句2
fi
test被[ ]代替时,[ ]之间的表达式一定要用空格隔开
判断输入的word是否相同
1.分多种情况执行
d)循环语句
f)函数
1.函数存在的意义:将需要重复使用的命令块封装起来,起一个唯一的名字,用来作为一个命令整体可重复使用
2.函数的定义 (在调用之前)
函数名()
{
重用命令块
}
3.函数的调用
直接使用函数名调用该函数
4.函数的传参
5.函数的返回值
在函数内部使用return返回一个值,在函数调用结束之后,使用$?获取返回值
add test()
{
return 100
}
add test()