Shell脚本基础
脚本:可以执行的一个文本文件,可以实现某种功能
规范Shell脚本的一般组成:
#! 环境声明(以下所有代码利用哪一个程序解释)
# 注释文本
可执行代码
管道传递
将前一条命令的标准输出交给后一条命令处理
重定向输出
> : 只收集正确输出
2>:只收集错误输出
&>:正确输出与错误输出都收集
$[] :代表运算 + - * / %(取余数运算)
' ':取消所有字符特殊意义
$( ):将命令的输出,当作参数,参与其他命令执行
黑洞设备:/dev/null 将所有数据定义到这个文件里面,就会直接消失,也不占用空间
为了增加脚本灵活度,适应多变的环境
变量:会变化的量 ,以不变的名称存放的可以变化的值
变量的赋值
变量名=变量值
等号两边不要有空格
变量名要求
变量名只能由字母/数字/下划线组成,区分大小写
变量名不能以数字开头,不要使用关键字和特殊字符
若指定的变量名已存在,相当于为此变量重新赋值
使用变量的值
查看变量值:echo $变量名、echo ${变量名}
环境变量:由系统定义完成,并且赋值完成,用户直接使用即可
$USER 永远储存当前登陆的用户名
$RANDOM 储存随机数字的变量
位置变量:由系统定义完成,并且赋值完成,用户直接使用即可
作用:在执行脚本时提供的命令行参数
表示为 $n,n为序号
$1、$2、.. .. ${10}、${11}、.. ..
增加用户的体验程度,降低用户的使用难度
read:产生交互,捕捉用户在键盘上的输入,并且赋值给一个变量
-p:'屏幕提示信息'
-s: 用于影藏输入的信息,一般用于密码
预定义变量:由系统定义完成,并且赋值完成,用户直接使用即可
$# 已加载的位置变量的个数,求和
$* 所有位置变量的值
$? 程序退出后的状态值,0表示正常,其他值异常
条件测试及选择判断
条件表达式:每一部分都要有空格
[ 测试表达式 ]
检查文件状态
-e:文档存在为真
-d:存在且为目录为真
-f:存在且为文件为真
比较整数大小( g代表大 l代表小 e代表等于)
-gt:大于
-ge:大于等于
-eq:等于
-ne:不等于
-lt:小于
-le:小于等于
字符串比对
== :字符串相等为真
!=:字符串不相等为真
if选择结构
if [条件测试1];then
命令序列xx
elif [条件测试2];then
命令序列yy
elif [条件测试3];then
命令序列aa
......
else
命令序列zz
fi