(六)Shell 脚本应用(1):基础与环境变量详解

一、shell 脚本基础

  1. shell 的作用和特点

    • 作用:shell 接收用户的指令,翻译后提交给 CPU 执行。
    • 特点:工作在内核和用户之间,接收用户数据命令,提交给 CPU 判断执行,并反馈执行结果。在 Linux 系统中使用 bash 接收用户输入指令。
  2. shell 脚本的组成

    • 声明使用的解释器为 bash,如#!/bin/bash
    • 写注释信息,对脚本进行功能描述。
    • 提供脚本作者联系方式,以便在使用脚本时发现问题能方便联系作者。
    • 包含脚本执行命令,这些命令从上到下严格执行。
  3. 编写测试脚本和脚本执行方式

    • 编写测试脚本:使用命令[root@centos01 ~]# vim./ls.sh创建脚本,脚本内容如#!/bin/bash#Phone 1316195981#列出目录内容echo "查看所在目录:"cd /boot/pwdecho "显示文件内容:"ls -lh vml*
    • 脚本执行的方式
      • sh:不需要脚本添加执行权限,可直接执行。
      • source:进入脚本内部执行命令,不需要执行权限。
      • ./脚本名字:执行脚本需要脚本拥有执行权限。
  4. 脚本的管道符和重定向

    • 脚本的重定向方式
      • 标准输入:用数字 0 表示,从键盘接收输入的内容。
      • 标准输出:用数字 1 表示,键盘输入内容显示到显示器或者文件中。
      • 标准错误:用数字 2 表示,脚本执行的错误信息显示在屏幕上。
    • 重定向的操作符号
      • <:从指定文件读取数据。
      • >:重定向输出,后执行的会覆盖先执行的内容。
      • >>:重定向追加,不会覆盖数据。
      • 2>:标准错误输出。
      • 2>>:标准错误追加。
      • &>:正确或者错误全部接收。
    • 管道符:前一个命令执行的结果转交给后一个命令执行。
  5. 重定向和管道符的基本使用

    • 管道符号使用:例如[root@centos01 ~]# head -10 /etc/passwd | grep "bash$" | awk -F: '{print $1,$7}'
    • 重定向的使用
      • [root@centos01 ~]# echo "aaa" >./a.txt:重定向输出。
      • [root@centos01 ~]# echo "ccc" >>./a.txt:重定向追加输出。
      • [root@centos01 ~]# lsss 2>./error.log:错误输出。
      • [root@centos01 ~]# ls / &>./1.txt:混合输出。
      • [root@centos01 ~]# aaaa 2>>./1.txt:混合追加。

二、环境变量

  1. 变量的作用和类型

    • 作用:提高命令的复用率,减少代码量。
    • 类型
      • 自定义变量:由用户创建。
      • 环境变量:安装系统时创建设置运行环境。
      • 位置变量:在脚本传递参数时使用。
      • 预定义变量:用户无法删除和修改。
  2. 自定义变量的使用

    • 定义变量的类型
      • 局部环境变量:只能在当前 bash 环境使用。
      • 全局环境变量:在任何 bash 环境中都能使用。
    • 变量存储空间:默认保存在内存中。
    • 定义环境变量注意事项:可以大写字母开始,中间下划线,结束小写字母;不能以符号开始。
    • 定义一个局部环境变量:使用命令[root@centos01 ~]# a=1定义变量名字为 a 赋值为 1,然后使用[root@centos01 ~]# echo $a调用变量名字 a。
    • 定义一个全局环境变量:使用命令[root@centos01 ~]# export b=2定义全局环境变量 b 赋值 2,然后使用[root@centos01 ~]# echo $b调用全局环境变量名字 b。
  3. 变量赋值的使用

    • 变量赋值的方式
      • 双引号:允许引用环境变量。
      • 单引号:禁止引用环境变量。
      • 反撇:将命令执行结果赋值给变量。
      • read -p:接收用户输入的内容赋值给变量。
    • 双引号的使用:使用命令[root@centos01 ~]# a=benet定义环境变量 1,[root@centos01 ~]# b=6.0定义环境变量 2,然后[root@centos01 ~]# benet="$a $b"调用环境变量 1 和 2 赋值给变量名字 benet,最后使用[root@centos01 ~]# echo $benet显示变量值。
    • 单引号的使用:使用命令[root@centos01 ~]# accp='$a $b',不允许引用变量,当成普通字符串显示,然后使用[root@centos01 ~]# echo $accp显示变量值。
    • 命令执行结果赋值给变量:使用命令[root@centos01 ~]# head=head -10 /etc/passwd | grep "bash$" | awk -F: '{print $1,$7}',将命令执行结果赋值给变量 head,然后使用[root@centos01 ~]# echo $head` 显示变量值。
    • read -p接收用户输入内容:使用命令[root@centos01 ~]# read -p "请输入你的名字:" name接收用户输入的内容赋值给变量 name,然后使用[root@centos01 ~]# echo $name显示变量值。
  4. 整数运算

    • 运算符:+(加)、-(减)、*(乘)、/(除)、%(求余)。
    • 整数运算:使用命令[root@centos01 ~]# a=20[root@centos01 ~]# b=10定义变量,然后使用[root@centos01 ~]# expr $a + $b(相加)、[root@centos01 ~]# expr $a \* $b(相乘)、[root@centos01 ~]# expr $a / $b(相除)、[root@centos01 ~]# expr $a % $b(取余)进行整数运算。
  5. 环境变量

    • 系统环境变量存储位置
      • /etc/profile:任意用户都可以使用。
      • ~/.bash_profile:只能当前用户使用。
    • 常见的环境变量
      • echo $PWD:查看所在位置。
      • echo $HOME:查看宿主目录。
      • echo $USER:当前登录系统用户。
      • echo $SHELL:使用命令解释器。
      • echo $PATH:命令所在位置。
  6. 位置变量

    • 位置变量使用注意事项:只能传递九个位置变量。
    • 使用位置变量:创建脚本[root@centos01 ~]# vim./sum.sh,内容为#!/bin/bashsum=expr $1 + $2 + $3echo "$1 + $2 + $3 = $sum",然后使用命令[root@centos01 ~]# sh./sum.sh 10 20 30` 向脚本传递三个参数。
  7. 预定义变量

    • 预定义变量类型
      • $#:统计预定义变量个数。
      • $*:位置变量内容。
      • $?:脚本执行状态,0 表示成功,非 0 表示错误。
      • $0:显示脚本名字。
    • 预定义变量使用:创建脚本[root@centos01 ~]# vim./sum.sh,内容为#!/bin/bashsum=expr $1 + $2 + $3echo "$1 + $2 + $3 = $sum"echo "脚本名字、统计变量个数#"echo "位置变量$*"echo "脚本执行状态 $?",然后使用命令[root@centos01 ~]# sh./sum.sh 40 50 60执行脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值