56 shell脚本

1.什么是shell

shell是一个命令解释器,将人类输入高级语言,通过shell程序转换为二进制
shell分为两种使用方式
  • 交互: 登录 执行命令 退出
  • 非交互:执行某个文件,文件中都是一堆命令,整个文件从上往下执行

2.shell脚本能做什么

标准:

    1.安装方式一致
    2.安装路径一致
    3.目录结构一致
    4.日志格式一致
    5.脚本路径一致
能将平时操作脚本化,流程化,自动化     ITIL 
    ppt   人  流程   技术/工具
备份
监控
自动化上线
约束标准

3.Shell脚本编写规范、执行方式。

执行方式分为两种:
    1.加执行权限                 ./script_filename.sh
    2.通过bash直接翻译   bash  script_filename.sh


'#!/usr/bin/bash  加与不加区别在哪?
    1.如果你明确清楚这是一个什么类型的脚本,直接调用对应的解释器执行,没有影响?
    2.如果你不清楚是什么类型的脚本, 直接使用./执行,那么会读取该脚本的第一行
        如果第一行是#!/usr/bin/bash 或者 没有写该行,那么都将使用默认的bash翻译
        问题: 如果我是一个python脚本,没有写开头,那么执行一定会报错
            因为默认查找的是bash解释器,而我的文件需要用python解释器来翻译.

添加命令解释器的几种方式:
    #!/usr/bin/bash
    #!/usr/bin/sh
    #!/usr/bin/env bash
    #!/usr/bin/env python

1.什么是变量

变量是shell中传递数据的一种方法。
简单理解: 就是用一个固定的字符串去表示不固定的值,便于后续引用。

2.定义变量规范

1.大写开头,后面小写或数字都ok
2.变量具体一定的含义
3.注意  变量的写法 仅支持 a=1         不支持  a = 1

3.自定义变量

var="hello world"
echo $var
echo ${var}_log
$* 和 $@ 的区别?
可以看到不加引号时,二者都是返回传入的参数,但加了引号后,此时$*把参数作为一个字符串整体(单字符串)返回,$@把每个参数作为一个字符串返回

1.定义变量几种方式

    1.1 自定义变量
    1.2 系统全局变量
    1.3 位置参数变量   sh test.sh  11 22 
    1.4 预定义变量    $? $#

2.通过read交互方式读入变量

    read  -t -s -n -p 

3.变量替换

    ${var#}     
    ${var##}
    ${var%}
    ${var%%}
    ${var//}
    ${var///}
    ${#var}
image.png

4.变量计算
[] expr

5.注意事项:

    ${}             #引用变量
    $()             #和``功能相同, 都是用来做命令替换
    $(())           #进行整数运算
    $[]             #进行整数运算
    ""              #弱引用,会解析变量
    ''              #强引用,所见即所得

6.if在判断的过程中,需要表达式
1.基于文件的方式判断 -d判断目录是否存在 -f判断文件是否存在 -s判断是否有内容默认是有 -e判断是否有这个对象 -z 空文件 -n非空
2.基于整数的方式判断 -eq 等于 -ne不等 -ge大等 -gt大于 -le小等 -lt小于
3.基于字符串方式判断 = !=
4.基于正则表达式方式判断 =~ ^[0-9]+ ^[A-Z]+
正则表达式外面格式为[[ ]]

image.png

image.png

image.png

image.png

你可能感兴趣的:(56 shell脚本)