1.什么是SHELL:
SHELL是一个操作系统和应用程序之间的命令解释器
2.SHELL的作用:
shell负责把应用程序的输入命令信息解释给操作系统,
将操作系统指令处理后的结果解释给应用程序。
3.SHELL的分类:
图形界面shell: 常说的桌面
命令行式shell: 常用的是windows下的cmd和linux下的bash
4.shell脚本简介
4.1 shell的使用方式:
手工方式: 逐行输入命令,逐行进行确认执行
脚本方式: 把手工输入的命令放到一个脚本文件中,通过执行这个脚本文件达到执行手工输入执行命令的效果
4.2 shell脚本的定义
当可执行的Linux命令或语句不在命令行状态下执行,
而是通过一个文件执行时,我们称文件为shell脚本。
5.shell脚本的基础知识
5.1创建脚本
编辑工具:vi / vim
脚本命名:要有意义,知道是做什么的
脚本内容:能够执行的命令
注释方式:单行注释和多行注释
单行注释:除了首行的#不是注释以外,其他所有行内容,只要有#,就代表该行是注释
#!/bin/bash
echo '1'
#echo '2'
echo'3'
多行注释:格式为-----> :<<! 内容 !和:<<字符 内容 字符
# ! /bin/bash
echo '1'
:<<a echo '2'
echo '3'
echo'4'
a
echo '5'
5.2执行脚本
bash /path/to/script-name 或 /bin/bash /path/to/script-name (强烈推荐使用)
/path/to/script-name 或 ./script-name (当前路径下执行脚本)
source script-name 或 . script-name (注意“.“点号)
5.3脚本开发规范
1、脚本命名要有意义,文件后缀是.sh
2、脚本文件首行是而且必须是脚本解释器:#!/bin/bash
3、脚本文件解释器后面要有脚本的基本信息等内容
4、脚本文件常见执行方式:bash 脚本名
5、脚本内容执行:从上到下,依次执行
6、代码书写优秀习惯:成对内容的一次性写出来,防止遗漏。
5.4.变量
1.变量的定义
变量包括两部分:变量名和变量值
2.本地变量
本地变量就是:在当前系统的某个环境下才能生效的变量,作用范围小。
本地变量包含两种:普通变量和命令变量
普通变量(三种方式)
变量名=变量值:变量值必须是一个整体,中间没有特殊字符
变量名='变量值':我看到的内容,我就输出什么内容
变量名="变量值":如果变量中有以前的变量名,会显示原有内容+以前的变量值
命令变量:
格式一:变量名=`命名`
格式二:变量名=$(命名)---->常用
全局变量
格式一:变量名=变量
export 变量名
格式二:export 变量名=变量值
查看变量是否存在:env | grep 文件名
变量的查看和删除
查看:1.echo $变量名--->自己用
2.echo "$变量名"--->自己用
3.echo ${变量名}---->标准写法
4.echo "${变量名}"---->最规范的写法
删除: unset 变量名----->取消变量(全局变量和本地变量)
5.5shell内置变量(一)
1.$0--->自动获取当前脚本的名称
#!/bin/bash
# 获取脚本的名称
echo "我脚本的名称是: file.sh"
echo "我脚本的名称是:$0"
2.$n--->获取当前脚本传入的第n个位置的参数
#!/bin/bash
# 获取指定位置的参数
echo "第一个位置的参数是: $1"
echo "第二个位置的参数是: $2"
echo "第三个位置的参数是: $3"
echo "第四个位置的参数是: $4"
3.$#--->获取当前脚本传入的参数的数量
#!/bin/bash
# 获取当前脚本传入的参数数量
echo "当前脚本传入的参数数量是: $#"
4.$?--->执行上一次指令的返回值
执行方式: echo $?
执行结果:(0为成功,非0为失败)
字符串精确截取
格式:${变量名:起始位置:截取长度}
简单示例:
${file:0:5} 从第1个字符开始,截取5个字符
${file:5} 从第6个字符开始,截取后面所有的字符
${file:0-5} 从倒数第5个字符开始,截取后面所有的字符
5.6shell内置变量(二)
两种默认值
1.有条件的默认值:
格式:${变量名:-默认值}
不传参数:输出默认值(bash 文件名)
传参数:输出参数(bash 文件名 参数)
2.强制的默认值:输出默认值,传参没有用
格式: ${变量名+默认值}
6.shell进阶
6.1测试语句
格式1: test 条件表达式
格式2:[ 条件表达式 ]------>常用
注意:
以上两种方法的作用完全一样,后者为常用。
但后者需要注意方括号[ ]与条件表达式之间至少有一个空格。
数字与字符之间也必须要有一个空格-->[ 1 = 2 ]
执行echo $?,0-条件成立/1-条件不成立
条件成立,状态返回值是0
条件不成立,状态返回值是1
6.2表达式
条件表达式:
1.逻辑表达式:&& 和 ||
命令1 && 命令2---->你执行我也执行,你不执行我也不执行
命令1 || 命令2------->你执行我不执行,你不执行我执行
&& 和 || 的组合:
[ 1 = 2 ]&& echo "条件成立" || echo "条件不成立"--条件不成立
[ 1 = 1 ]&& echo "条件成立" || echo "条件不成立"--条件成立
2.文件表达式
-f ---->判断输入内容是否是一个文件
-d---->判断输入内容是否是一个目录
-x---->判断输入内容是否可执行
案例:判断一个文件,如果存在,提示存在,不存在,就创建一个
[ -f moren13.sh ]&& echo "已经存在的文件" || touch moren13.sh
3.数字表达式
[ n1 -eq n2 ] 判断是否相等
[ n1 -gt n2 ] 判断n1是否大于n2
[ n1 -lt n2 ] 判断n1是否小于n2
4.字符串表达式
[ a == a ] 判断字符串内容是否一致
[ a != a ] 判断字符串内容是否不一致
计算表达式:
1.$(( 计算表达式))
echo $((100/5))----> 20
注意:$(())中只能用+-*/和()运算符,并且只能做整数运算
2.let 计算表达式
格式:let 变量名a=变量名a+1
注意:表达式必须是一个整体,中间不能出现空格等特殊字符
练习:
i=1
let i=i+7
echo $i
结果:8
6.3Linux常见符号
重定向:> , >>
管道: |
6.4其他符号
后台执行符号: &
定义:& 就是将一个命令从前台转到后台执行
使用格式:命令 &
信息符号:
1 表示正确输出的信息
2 表示错误输出的信息
2>&1 代表所有输出的信息
设备文件(linux系统垃圾桶)
/dev/null 是linux下的一个设备文件,
这个文件类似于一个垃圾桶,特点是:容量无限大