Shell总结2

介绍

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值