介绍
shell 是一个解析命令,是人机交互的桥梁,将需要执行的命令保存在文本中,按照顺序执行。
作用
用来解决重复化的工作
1 自动化软件部署
2 自动化管理 系统初始化脚本,批量更改主机信息
3 自动化分析处理 统计网站访问量
4 自动化部署 数据库备份,日志转储
5 自动化监听脚本
基础语法
开头 #!/bin/bash 或 #!/bin/enc bash
注释 #…
执行
1:
chmod +x .sh #修改执行权限
/…/.sh 执行
2:
直接指定解析器
bash *.sh
可以输出执行过程 bash -n *.sh
3:
使用source命令 重新读取并执行
source *.sh
定义变量
A=hello 定义变量A
A=命令 将命令结果赋值A
echo $A 调用变量
unset A 取消变量A
变量名:
1 区分大小写
2 不能包含特殊符号(? * …)
3 值中有特殊符合,使用”“
4 变量名不能以数字开头
5 等号两边不能有空格
read交互是变量赋值
read 选项 变量名
选项:
-p 提示信息 -s 不显示输入
-n 限制输入长度 -t 限制输入时间
read -p “input:” -n 3 -t 3 A
从文件中读取
read -p "input: " A < a.txt
定义有类型的变量(declare)
declare 选项 变量名=变量值
declare -i A=123
选项:
-i 整数 -r 只读 -a 数组
-A 关联数组 -x 将变量通过环境导出
变量分类
- 本地变量:
只能在当前进程有效。变量声明默认为本地变量。变量名=变量值 - 环境变量:
当前用户有效子进程有效,declare -x 变量名=变量值 | export 本地变量名 - 全局变量:
全部用户和程序可调用,新建用户也可调用,修改配置文件(etc/bahsrc etc/profile),并source让其生效.
用户读取文件顺序
/etc/profile $HOME/.bash_profile $HOME/.hashrc /etc/bahsrc - 系统变量:
shell固定好的变量
$? 上一条命令的返回值 0表示OK 非0 有问题
$0 当前执行的程序或脚本名
$# 脚本后参数的个数
$* 脚本后面所有参数,
$@ 脚本后面所有参数,
$1-$9 脚本后面的位置参数
$! 当前终端后台运行的最后一个进程号
! $ 调用最后一条命令中的参数
$$ 当前进程号
四则运算
加+ 减- 乘* 除/ 取余% n次方 **n
运算符号:
$(())
$[]
expr
let
小数运算 bc echo 1+1.5|bc
条件判断语句
条件判断语句格式
1 test 条件表达式
2 [ 条件表达式 ]
3 [[ 条件表达式 ]] 支持正则=~
test判断参数
1 文件存在判断参数
-e 判断文件是否存在 -f 判断是否存在并且是一个普通文件
-d 判断是否存在并且是一个目录 -L 判断是否存在并且是一个软连接
-b 判断是否存在并且是一个设备文件 -S 判断是否存在并且是一个套接字文件
-c 判断是否存在并且是一个字符设备 -p 判断是否存在并且是一个命名管道文件
-s 判断是否存在并且是一个非空文件
! 取反
2 文件权限判断参数
-r 是否可读 -w 是否可写 -x 是否可执行
-u 是否有suid,冒险位 -g 是否sgid,强制位 -k是否有t位,粘滞位
-ep 两个文件是否为同一个文件
3 判断整数
-eq 相等 -ne 不等 -gt 大于 -lt 小于
-ge 大于等于 -le 小于等于
4 判断字符串
-z 是否为空 -n 是否非空
string1 = string2 是否相等 string1 = string2 是否不相等
5 多重条件判断
-a 和 && 逻辑与
-o 和 || 逻辑或
流程控制语句
1 if结构
if [ condition];then
command
command
fi
if test 条件;then
命令
fi
2 if else
if [condition ];then
command
else
command
fi
3 if elif else
if[ condition ];then
command1
elif [ condition2 ];then
command2
else
command3
fi
循环语句
1 for循环
for variable in {list}
do
command
command
done
{list} 可以{1…10} seq 10 a b c
for ((i=1;i<=5;i++))
do
command
done
seq序列
seq 10 生成1-10的序列
seq 10 -1 1 生成10-1的序列
条件控制语句
continue:
break:
exit:
While循环
while 表达式
do
command
…
done
until循环
until expression //为假进入循环
do
command
…
done
133

被折叠的 条评论
为什么被折叠?



