Linux系统管理-shell脚本的应用

一、编写一个shell脚本

1、编写脚本代码

(1)使用vi文本编辑器

使用命令:vi first.sh

(2)编辑内容

按i插入编辑:
cd /boot/
pwd
ls-lh vml*
cd /root

wq保存,ls确认当前目录(/root)有first.sh
在这里插入图片描述

2、赋予可执行权限

(1)使脚本具有可执行属性

[root@localhost ~]# ll first.sh (先查文件默认的权限)
[root@localhost ~]# chmod +x first.sh(+x前不写用户或组,默认所有人都给X权)
[root@localhost ~]# ls -l first.sh
在这里插入图片描述

3、执行脚本文件

  • 方法一:脚本文件路径(若在当前位置,不能直接写文件名)
    [root@localhost ~]# ./first.sh
  • 方法二:sh 脚本文件路径
    [root@localhost ~]# sh ./first.sh
  • 方法三:source 脚本文件路径(先clear,再执行下列命令)
    source ./first.sh
    在这里插入图片描述

4、执行chmod –x first.sh,再运行下面命令,对比结果。

[root@localhost ~]# ./first.sh
(必须有x权限)
[root@localhost ~]# sh ./first.sh
[root@localhost ~]# source ./first.sh
(不要求x权限)
在这里插入图片描述

5、更完善的脚本构成

  • 脚本声明
  • 注释信息
  • 可执行语句

[root@localhost ~]# vi ./first.sh
在里面插入以下内容

#!/bin/bash
#This is my first Shell-Script.
cd /boot
echo “当前的目录位于:”
pwd
echo “其中以vml开头的文件包括:”
ls -lh vml*
echo “回到本文件存放目录”
cd /root

wq保存退出再运行一次上述脚本,结果显示
在这里插入图片描述

二、重定向与管道操作

1、交互式硬件设备

在这里插入图片描述

2、重定向操作

在这里插入图片描述

3、管道操作符号“|”( 本例用的awk,为文本处理命令)

  • 将左侧的命令输出结果,作为右侧命令的处理对象
  • 格式:cmd1 | cmd2 [… | cmdn]

[root@localhost ~]# grep “bash$” /etc/passwd(先执行clear)

[root@localhost ~]# grep “bash$” /etc/passwd | awk -F: ‘{print $1,$7}’

可以看到,结果整理得干净多了
在这里插入图片描述

三、Shell变量的作用、类型

变量的作用

为灵活管理Linux系统提供特定参数,有两层意思:

  • 变量名:使用固定的名称,由系统预设或用户定义
  • 变量值:能够根据用户设置、系统环境的变化而变化

变量的类型

  • 自定义变量:由用户自己定义、修改和使用
  • 环境变量:由系统维护,用于设置工作环境
  • 位置变量:通过命令行给脚本程序传递参数
  • 预定义变量:Bash中内置的一类变量,不能直接修改

四、自定义变量

定义一个新的变量

  • 格式:变量名=变量值
  • 变量名以字母或下划线开头,区分大小写,建议全大写

查看变量的值

  • 格式:echo $变量名
    [root@localhost ~]# Product=PPT
    [root@localhost ~]# Version=3.0
    [root@localhost ~]# echo $Product
    [root@localhost ~]# echo $Product $Version
    在这里插入图片描述

赋值时可以使用引号,它们将有如以下意义

  • 双引号:允许通过$符号引用其他变量值

如NEW=“WORD$Version”,将引用上面的变量,结果是WORD3.0

  • 单引号:禁止引用其他变量值,$视为普通字符

当需要用 符号时。如 C A S H = ‘ U S 符号时。如CASH=‘US 符号时。如CASH=USIS’

  • 反撇号:命令替换,提取命令执行后的输出结果

如EX=pgrep –U root | wc –l,把命令结果赋给EX
请添加图片描述

从键盘输入内容变为变量赋值

格式: read [-p “提示信息”] 变量名
如read –p “请输入循环次数:” CISHU
请添加图片描述

设置变量的作用范围

  • 格式1:export 变量名 … (已有的变量)
  • 格式2: export 变量名=变量值 …(新定义的变量)
  • —— 两种格式可以混合使用

[root@localhost ~]# echo “$Product $Version”

[root@localhost ~]# export Product Version
[root@localhost ~]# bash
(进入当前工作区的一个子环境,相当于副本)

[root@localhost ~]# echo “$Product $Version”

[root@localhost ~]# echo “$EX $CISHU“ (它们则没结果)

[root@localhost ~]# exit
(回到主工作区)
[root@localhost ~]# echo “$EX $CISHU“
在这里插入图片描述

整数变量的运算

格式:expr 变量1 运算符 变量2 [运算符 变量3] …

常用运算符

  • 加法运算:+
    例:echo $EX $CISHU
    AK=expr $EX + $CISHU (假定read 时输入15)
    echo $AK
  • 减法运算: -
    例AK=expr $EX - $CISHU
    echo $AK
  • 乘法运算: *
    例AK=expr $EX \* $CISHU
    echo $AK
  • 除法运算: /
    例AK=expr $EX / $CISHU
    echo $AK
  • 求模(取余)运算: %
    例AK=expr $EX % $CISHU
    echo $AK
    请添加图片描述

五、特殊的shell变量

环境变量

  • 由系统提前创建,用来设置用户的工作环境
  • 配置文件: /etc/profile、~/.bash_profile

常见的环境变量

  • PWD、PATH
  • USER 、LOGNAME、UID、SHELL、HOME
  • PS1、$PS2

[root@localhost ~]# echo $PATH

[root@localhost ~]# PATH=“$PATH:/root” (添加一下新路径/root)

[root@localhost ~]# echo $PATH

在这里插入图片描述

位置变量

表示为 n , n 为 1   9 之间的数字 , 超过 9 则用 n,n为1~9之间的数字,超过9则用 nn1 9之间的数字,超过9则用{n}
[root@localhost ~]# ./myprog.sh one($1,第一个位置参数) two($2,第二个位置参数) three four five six($2,第六个位置参数)

[root@localhost ~]# cat myprog.sh
echo “字母表第5个字母是:” $5
echo “字母表第18个字母是:” ${18}
[root@localhost ~]# sh myprog.sh {a…z}
字母表第5个字母是:e
字母表第18个字母是:r
在这里插入图片描述

预定义变量

[root@localhost ~]# cat mybak.sh
#!/bin/bash
TARFILE=beifen-date +%Y%m%d.tgz
tar zcf $TARFILE $* &> /dev/null
echo “已执行 $0 脚本,”
echo “共完成 $# 个对象的备份”
echo “具体内容包括: $*”
[root@localhost ~]# sh mybak.sh /etc/passwd /etc/shadow

[root@localhost ~]# ls *.tgz
请添加图片描述

脚本应用思路

  1. 确定命令操作(设计并执行任务)
  2. 编写Shell脚本(组织任务过程)
  3. 设置计划任务(控制时间,调用任务脚本)

六、练习

练习1

编写脚本程序welcome.sh
验证登录时的欢迎效果
在这里插入图片描述

练习2

编写脚本程序status、start、stop
使用上述脚本来控制系统服务
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/2201_76034619/article/details/131541696