1.Shell概述
Shell连接了用户和Linux内核,他可以解释用户输入的命令传输给内核,让用户可以更加方便的使用Linux系统;
Shell本身并不是内核的一部分,他只是站在内核的基础上编写一个应用程序;
Shell具备编程的能力,也是一种语言;
Shell语言支持大部分编程语言都具备的功能:if判断、for循环、变量、数组、函数、加减乘除、逻辑运算。
2.规范的shell脚本组成
3.如何写好一个shell脚本
①明确任务需求;
②按需求整理好每一个步骤,先做什么,后做什么;
③运行脚本、并根据运行结果排除错误;
④优化脚本并达到最终效果。
4.脚本执行方式
①赋予执行权限后,可以绝对路径或者当前路径执行
绝对路径:/root/hello.sh
相对路径:脚本同级目录下./hello.sh
②调用解释器执行脚本文件
查看系统有哪些解释器,都可以使用:cat /etc/shells
执行脚本:bash hello.sh
5.编写脚本
步骤:vim xxx.sh chmod u+x xxx.sh ./xxx.sh
①Hello world
②创建用户名和密码
③查看系统信息
④搭建本地yum源(正常版)
⑤搭建本地yum源(升级版)
6.常用特殊符号
①“” #双引号,引用整体
②‘ ’ #单引号,引用整体并取消所有特殊字符含义
③$[] #四则运算(+ - * / % 取余数)
④$() #将命令的输出结果作为参数
⑤`` #反撇 将命令的输出结果作为参数
举例:
①[root@localhost ~]# echo "$PATH" 表示引用整体,不屏蔽特殊符号的功能
②[root@localhost ~]# echo '$PATH' 表示引用整体,屏蔽特殊符号的功能
③[root@localhost ~]# echo $[1+1] 表示四则运算
④[root@localhost ~]# touch $(date +%F)-a.txt 表示$()取命令结果作为参数
⑤[root@localhost ~]# touch `date +%F`-x.txt 表示``取命令结果作为参数
7.变量
以固定的名称存放可能变化的值,提高脚本的灵活度来适应多变的环境。
定义变量:变量名=变量值,如:a1=abc(等号两边不要有空格);
取消变量:unset 变量名。
定义变量注意事项:
①变量名由字母/数字/下划线组成,区分大小写,不能以数字开头,不要使用命令和特殊符号;
②若指定的变量名已经存在,相当于为此变量重新赋值。
举例:
①定义变量并输出
[root@localhost ~]# xx=5
[root@localhost ~]# echo $xx
[root@localhost ~]# echo $[xx+5]
②通过变量定义用户名
8.read标准输入取值
read 读取用户在键盘上输入的内容,并把内容存放在变量里,可以降低脚本的使用难度。
命令格式:read -p “提示信息” 变量名
举例:
①交互式创建用户脚本
9.变量种类
环境变量:变量名一般都大写,用来设置用户/系统环境;
位置变量:bash内置,存储执行脚本时提供的命令参数;
预定义变量:bash内置,可直接调用的特殊值,不能直接修改;
自定义变量:用户自定义。
环境变量举例:
①查看系统所有环境变量
[root@localhost etc]# env
②获取变量值
[root@localhost etc]# echo $SHELL
③查看系统所有变量,包括用户自定义变量
[root@localhost ~]# set
[root@localhost ~]# set | grep $a
位置变量:
$0 #脚本名称
$1 #第一个参数
$2 #第二个参数
$3 #第三个参数
$4 #第四个参数
$n… #第n个参数
预定义变量:
$0 #代表脚本本身
$* #显示所有参数内容
$# #显示有多少个参数
$? #显示上一条命令的执行结果(0代表正确,非0代表错误)
$$ #显示脚本进程号(PID)
举例:
①编写test.sh脚本
②赋予执行权限,执行test.sh脚本
③编写脚本