• 11-Shell(1)


    干什么用

    1. Linux 运维工程师在进行服务器集群管理时,需要编写 Shell 程序来进行服务器管理
    2. 对于 JavaEE 和 Python 程序员来说,工作的需要,会要求你编写一些 Shell 脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本
    3. 对于大数据程序员来说,需要编写 Shell 程序来管理集群

    Shell 解析器

    Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,它接收应用程序/用户命令,然后调用 OS 内核。

    用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。

    QuickStart

    Shell 脚本简单说明

    • Shell 脚本可理解为:命令的集合
    • 脚本以 #!/bin/bash 开头
    • 脚本需要有可执行权限

    需求说明:创建一个 Shell 脚本,输出 Hello World!

    脚本的常用执行方式

    方式1 (输入脚本的绝对路径或相对路径)

    • 说明
      • 首先要赋予 myShell.sh 脚本 x 权限
      • 此时,脚本首行的 #!/bin/bash 表示要使用的解析器(这行不写也行,默认 bash)
    • 执行脚本

    方式2 (sh+脚本)

    • 说明
      • 不用赋予脚本 x 权限,直接执行即可
      • 此时,脚本首行的 #!/bin/bash 就是一行注释
    • sh / bash 命令解释执行

    第一种方式本质上是脚本需要自己执行,所以需要执行权限;第二种方式本质上是 bash 解析器帮你执行脚本,所以脚本本身不需要执行权限,其中 bash myShell.sh 命令中的 myShell.sh 是作为参数存在的。

    Shell 的变量

    基本介绍

    1. Linux Shell 中的变量分为:系统变量用户自定义变量
    2. 系统变量:$HOME$PWD$SHELL$USER 等;如:echo $HOME
    3. 显示当前 Shell 中所有变量:set

    定义

    • 基本语法
      • 定义变量:变量=值
      • 撤销变量:unset 变量
      • 声明静态变量:readonly 变量,注意:不能 unset
    • 定义规则
      • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头
      • 等号两侧不能有空格
      • 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算
      • 环境变量名称一般习惯为大写
      • 变量的值如果有空格,需要使用双引号或单引号括起来

    返回值赋给变量

    1. 使用反引号包裹命令,运行里面的命令,并把返回结果赋值给变量A
    2. A=$(ls -la) 等价于反引号方式

    设置环境变量

    基本语法

    1. export 变量名=变量值 将 Shell 变量输出为环境变量
    2. source 配置文件 让修改后的配置信息立即生效
    3. echo $变量名 查询环境变量的值

    快速入门

    1. 在 /etc/profile 文件中定义 TOMCAT_HOME 环境变量
    2. 查看环境变量 TOMCAT_HOME 的值
    3. 在另外一个 Shell 程序中使用 TOMCAT_HOME

    位置参数变量

    基本介绍

    当我们执行一个 Shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

    比如: ./myShell.sh 100 200,这就是一个执行 Shell 的命令行,可以在 myShell.sh 脚本中获取到参数信息。

    基本语法

    • $n n 为数字
      • $0 代表命令本身
      • $1 ~ $9 代表第 1 到第 9 个参数
      • 10 以上的参数需要用大括号包含,如 ${10}
    • $* 这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体
    • $@ 这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待
    • $# 这个变量代表命令行中所有参数的个数,常用于循环

    案例

    编写一个 Shell 脚本 positionPara.sh,在脚本中获取到命令行的各个参数信息

    预定义变量

    就是 Shell 设计者事先已经定义好的变量,可以直接在 Shell 脚本中使用

    基本语法

    • $$ 当前进程的进程号 (PID)
    • $! 后台运行的最后一个进程的进程号 (PID)
    • $? 最后一次执行的命令的返回状态
      • 如果这个变量的值为 0,证明上一个命令正确执行
      • 如果这个变量的值为 !0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确
      • 举例

    应用实例

    在一个 Shell 脚本中简单使用一下预定义变量

    Shell 运算符

    基本语法

    • $[运算式]
    • $((运算式))
    • expr ...
      • expr 运算符、数据间都要有空格
      • expr +-*/%

    应用实例

    • 计算 (2+3)*4 的值
    • 求出命令行的两个整数参数的和

    判断语句

    基本语法

    • 格式:[ condition ] // condition 前后要有空格!

    常用判断条件

    • 两个整数的比较
      • = 字符串比较
      • -lt 小于
      • -le 小于等于
      • -eq 等于
      • -gt 大于
      • -ge 大于等于
      • -ne 不等于
    • 按照文件权限进行判断
      • -r 有读的权限
      • -w 有写的权限
      • -x 有执行的权限
    • 按照文件类型进行判断
      • -f 文件存在并且是一个常规的文件
      • -e 文件存在
      • -d 文件存在并是一个目录

    应用实例

    条件判断

    • 基本格式
      if [ 条件判断式 ];then
          程序
      fi
      ·························
      if [ 条件判断式 ]
      then
          程序
      elif [ 条件判断式 ]
      then
          程序
      else
          程序
      fi
      
    • 举例
      • 如果输入的参数,大于等于 60,则输出 "及格了";如果小于 60,则输出 "不及格"
      • 查看是否存在一个叫 abc 的文件,如果存在就打印文件内容,如果不存在就新建一个,然后输入abc作为文件内容
  • 相关阅读:
    SSH访问linux 乱码问题
    AppScan典型的工作流程
    安装&卸载功能 [测试思路]
    巴菲特
    AppScan 庐山真面目
    常见网页安全测试工具
    AppScan报告类型
    股票市场股票状态
    我的2010
    股票市场开盘时间
  • 原文地址:https://www.cnblogs.com/liujiaqi1101/p/13556385.html
Copyright © 2020-2023  润新知