Shell的定义
Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。
当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。 在Shell脚本里内置了很多命令、语句及循环控制,然后将这些命令一次性执行完毕,这种通过文件执行脚本的方式称为非交互的方式。 Shell脚本语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件,以及绝大对数的启动文件都是纯文本类型的文件。
[root@localhost ~]# cat /etc/shells
/bin/sh (指向/bin/bash)
/bin/bash (默认shell类型)
/usr/bin/sh
/usr/bin/bash
shell脚本:
关键字
Linux命令
shell自带命令
函数
控制语句
.sh 作为文件后缀,代表是shell脚本
/etc/profile ~/.bash_profile ~/.bashrc ~/etc/bashrc(以最后一个生效)
shell脚本类型:
脚本书写规范
#!/bin/bash
添加注释信息
#日期,#作者,#作用,#版本,#联系方式…
#Date:2022-6-12
#Author:
#Desc:
#Vers:
#Email:
文件名后缀 .sh
shell脚本执行:
shell脚本编写规范:
写shell脚本时,命令用反单引号括起来``
设置变量 name=upper(等号两边不能有空格)
成对的符号,建议一次性写完 () {} [] ’ ’ " " ``
对于流程控制语句,应一次性将格式写完,再添加内容。缩进最好空四个
if []
then(注意缩进)
fi
for
do
...
done
变量
变量赋值方法
变量名="值 "(=左右两边没有空格)
echo $变量名(进行输出)
对于环境变量:变量名大写
set命令:查看环境变量
env命令:查看全局变量
declare:用来做定义
unset NAME:取消变量/删除变量
eg :
# unset A 撤销变量 A
# readonly B=2 声明静态的变量 B=2 ,不能 unset
用户自定义只在set中有;env中没有
自定义环境变量
(仅在当前环境有效)
1、export 变量名=值
2、变量名=值;export 变量名
3、declare -x 变量名=值
赋值用= ; 相等用==
用户级环境变量
~/.bashrc
全局环境变量
/etc/profile
/etc/bashrc
/etc/profile.d:存放脚本
取消环境变量:unset 变量名
局部变量
变量名=值
变量名=‘值’
变量名=“值”
变量名=command
变量名=$(command)
变量数组
特殊变量
赋值时引号的作用:
- 双引号:允许通过$符号引用其他变量值
- 单引号:禁止引用其他变量值,$视为普通字符
- 反撇号:命令替换,提取命令执行后的输出结果 全局变量的定义方法 export 变量名
字符串变量:
数组:
获取数组元素:
位置变量!!!
$0 获取当前shell脚本文件名
$n (n>0) 代表参数值
$@ 代表命令行中所有的参数
$# 代表命令行中所有参数的个数
$* 代表命令行中所有的参数
$? 获取上一条命令执行的状态返回值 0代表成功,非0代表失败
$$ 获取当前shel