目录
一.Shell 编程
(一)什么是Shell
Shell是计算机操作系统中的一种程序,用来作为用户与操作系统之间的界面,用户可以通过Shell来向操作系统发出指令,并接收操作系统的反馈。Shell可以是一个命令解释器,可以解释和执行用户输入的命令,也可以是一个脚本解释器,可以执行一系列预先编写好的指令。
(二)Shell的作用
Shell是存在于用户和内核之间的,它的存在就相当于一个“翻译”,将用户输入的指令进行解释翻译,然后发送给内核,由内核来调用执行硬件资源。
(三)编程语言类型
(1)编译型
C C++ JAVA GO #代码文件需要先编译后,程序才能执行
(2)解释型
SHELL PYTHON #代码是边解释边运行的
(四)Shell脚本编写
(1)创建一个以.sh为结尾的文件
vim XXX.sh
(2)申明解释器
#!/bin/bash #!/bin/python
(3)编写注释信息
要以 # 号开头表示为注释,被注释的语句在脚本运行时是不会被执行的
#xxxxxxxxxxxxxxxx
(4)编写执行语句
按照顺序编写要执行的命令语句
(五)Shell脚本的运行
(1)在子shell环境中执行脚本的运行
bash 或 sh 指定脚本文件运行,可无执行权限
(2)在当前shell环境中执行脚本
source 或 . 指定脚本文件运行,可无执行权限
二.重定向符号
符号 | 含义 |
< | 重定向输入,从文件读取数据 |
> | 重定向输出,将正常输出的数据信息保存到文件,并覆盖原文件内容 |
>> | 重定向追加,将正常输出的数据信息追加保存到文件末尾 |
2> | 重定向错误输出,将错误输出的数据信息保存到文件,并覆盖原文件内容 |
2>> | 重定向错误追加,将错误输出的数据信息追加保存到文件末尾 |
&> >& | 混合输出,将正常和错误输出的数据信息都保存到文件,并覆盖原文件内容 |
&>> | 混合追加,将正常和错误输出的数据信息都追加保存到文件末尾 |
三.变量
(一)变量的定义
(1)变量名=变量值
变量名只能用 _ A-Z a-z 开头
(2)read -p "提示内容" 变量名
从键盘输入中获取变量值
(二)引号的作用
双引号 | 把引号里面的字符看作为引用XXX变量值的特殊符号 |
单引号 | 把引号里面的字符看做普通字符,不会引用变量的值 |
反撇号 | 提取里面的命令执行后的结果 |
(三)变量的作用范围
默认情况下自定义的变量只能在当前shell环境中有效
如何让自定义的变量在所有shell环境中有效:
(1)在 /etc/profile 文件中定义 export 变量名=变量值
source /etc/profile 立即生效 或 重新登录系统自动生效
(2)在 /etc/bashrc 文件中定义 变量名=变量值
切换 shell 环境自动生效
(四)数字运算的方法
(1)整数运算
运算符号: + - * / %
1)echo $(expr 整数1 运算符 整数2)
$(expr $变量1 运算符 $变量2)
2)echo $[整数1 运算符 整数2]
$[变量1 运算符 变量2]
3)echo $((整数1 运算符 整数2))
$((变量1 运算符 变量2))
(2)浮点数运算
1)echo '4.5+2.1' | bc
2)awk 'BEGIN{print 4.5+2.1}'
(五)变量的分类
(1)环境变量
env #查看当前shell环境中所有可用的环境变量
/etc/profile ~/.base_profile
export PATH USER PWD HOME LANG HISTSIZE
(2)只读变量
readonly 变量名=变量值 #只读变量不允许被修改变量值和删除变量
(3)位置变量
./shell.sh one two three four .... ten
$0 $1 $2 $3 $4 ${10}
(4)预定义变量
$0 代表脚本本身
$# 代表脚本后面跟的位置参数的数量
$? 代表的是上一条Linux命令执行的返回状态码(0~255),0表示上一条命令执行正确,非0值则表示上一条命令执行异常
$* 默认代表脚本后面跟的所有参数,加上双引号后 "$*" 会把所有参数看做一个整体
$@ 默认代表脚本后面跟的所有参数,加上双引号后 "$@" 还是会把每个参数看做