shell是什么?
shell介于人和计算机之间(翻译官)
人类有人类语言,计算机有计算机语言。shell翻译人类语言和计算机语言。
shell类型
/bin/sh:已被淘汰
/bin/bash:现在常用的,也是linux默认的shell (管理员)
/usr/bin/sh:也被淘汰
/usr/bin/bash:现在常用的,也是linux默认的shell (普通用户)
/bin/tcsh:基于tcsh,提供更多的扩展功能
/bin/csh:类C语言shell
我们默认使用的shell就是bash
查看用户使用的shell
cat /etc/passwd(查看用户信息)
shel脚本
脚本语言:扩建语言,也可理解为动态语言,也是是编程语言的一种,主要用来控制软件应用程序。都是以文本形式保存,只要在被调用的时候,文本代码才会被解释或编译,执行。
创建脚本:
.sh 约定成俗的习惯,都以.sh结尾,表示shell脚本
shell脚本的作用:
1.自动化运维(配合定时任务执行)
2.批量化重复操作可以通过脚本执行,减少人工的重复输入
3.减轻了管理员的工作量
4.提高了处理文件的速度
5.避免配置出错
shell脚本的组成结构:
1.声明解释器
2.#表示注释,注释掉的代码不会被执行,而且是按行进行注释
3.脚本当中的语句,linux的可执行命令都可以做为shell脚本的语句
#可执行语句:
命令行可执行(只要是linux命令)都可以作为可执行语句。
脚本当中内容执行顺序是从上到下,依次按行执行。
4.脚本当中的语句按照从上到下,依次按行执行
shell的执行方式:
1.不赋权执行(脚本调试)
sh 脚本名
source 脚本名
source命令:.命令
对于刚刚修改的文件进行初始化操作。(文件的内容都是shell语句,都是可执行的命令)执行source可以不需要重启,使更改的内容直接生效。
sh:只在当前环境运行,并不涉及子shell环境切换。
source:新建一个shell继续执行,而且所有的执行结果都会保存在这个shell里面
2.赋权执行(执行权限)
赋权执行:
chmod 777
./first.sh 在当前目录可以直接执行
/opt/first.sh 绝对路径来写
需要执行的脚本不能放在用户的家目录
最好放在opt目录下
结合定时任务执行,必须要绝对路径
标准输入:键盘,文件编号是0,我们执行的命令结果。例:ls cd/opt
标准输出:显示器,显示输出的结果
标准错误:显示器,显示错误的输入信息。例:LS
重定向
重定向输出:将标准输出的内容保存到指定的文件,覆盖文件当中的原有内容,> >>也是重定向输出,在文件内容的尾部追加,不覆盖文件的原有内容。
重定向错误输出:2> 2>>
混合输出:&> 会覆盖原有内容 & >>行后添加不会原有内容
既可以保存错误输出也可以保存正确输出
重定向输入
一定要关闭安全机制!
怎么在shell脚本中定义变量,以及shell脚本的变量类型shell的运算符
变量:面向对象,对象的名称和属性
名称:变量名
属性:变量值,对象的描述信息
Int:整数类型
string:字符串类型
布尔:true false
浮点:1.2.3.4.5.6
变量名=属性值
打印变量值
(这里是实验环境就用a=abc,简单方便)
变量的命令规范(自定义变量)
1.不要使用linux系统命令作为变量名。
2.不要使用中文。
3.不要使用特殊符号作为变量名称的开头,可以使用_可以作为变量的开头。
4.默认规则:学生:student stu= 秒:sec 计算机:computer
5.默认加上注释的,变量名的引用保持前后一致。
(4,5都是默认的)
自定义变量:
在自定义变量当中:“” ‘’ ``
整数类型可以不加引号,赋值为字符串类型,最好加上引号,以避免歧义。
在给变量赋值时,单引号和双引号一样,不影响变量的值
``:命令替换,先执行反撇号当中的命令,然后再把命令执行的结果赋值给变量
打印变量时双引号和单引号机制不同
echo “$a” 弱引用,原变量的值不变。
echo ‘$a’ 强引用,变量值将不在打印,就是$a这个字符串
echo“${a}”:保证一定能够正确的识别变量值(避免出现歧义)
变量赋值
read命令的方式获取变量
read -p“提示信息”变量名
变量的作用范围
默认情况,新定义的变量只在当前的shell环境中生效
全局变量:
export 变量名=变量值
注意:变量如果不添加到配置文件中都是暂时的
需要在一整套环境当中引用唯一且不需要变化的变量时,才会声明全局变量。
在底行添加
立即生效
环境变量:
系统提前创建,用户也可以添加。设置用户的工作环境,配置系统行为,控制程序执行。
特殊的全局变量
用户级环境变量:只对当前用户可见
预定义环境变量:系统预设,所有都可以见,相当于全局变量
自定义的环境变量:特殊的全局变量,只对设置用户有效
常用的环境变量:
$USER:显示用户的名称
$HOME:用户的家目录
$PWD:表示当前所在的工作目录
$PATH:可执行用户程序的默认路径
位置变量:
也叫作命令行参数,在脚本或者程序运行时,传递给他们的值,而且位置变量在脚本外部传递变量值。
预定义变量:
编程语言或者脚本解释器提供的,不能修改的,只能根据需要自动设置或者更新。
$*和$@:表示命令或者脚本需要处理的参数
$*和$@:不加引号表现一致,都会把参数分行处理
$*:加上双引号,会把参数当成一行进行处理
$#:显示需要处理的参数个数
$?:表示前一条命令或者脚本执行之后的返回状态码,只有返回0表示执行成功,所有非0全部表示失败。也可以用在函数中做为return的返回值
shell脚本当中整数的运算方式:(只能做整数运算)
c=$((12+5)) let c=12*5 主用这两个
c=$[12*5] c=$(expr 12+5) 乘法不一样 c=$(expr 12\*5)
运算符号
+:加 -:减 *:乘 /:除(无法算小数)
%:取余 例6%5=1(余数为1)
浮点运算
num=$(awk 'BEGIN{print 4.65+3.33}')