shell脚本基础知识详解

shell脚本基础知识

文章目录

    • shell脚本基础知识
      • 1、什么是shell
      • 2、shell脚本的意义
      • 3、如何创建shell脚本
      • 4、如何执行shell脚本
      • 5、如何对脚本进行调试

1、什么是shell

shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的shell命令就包括ls、cd、pwd等等。总结来说,shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。

2、shell脚本的意义

shell脚本与Windows/Dos下的批处理相似,也就是将各类命令预先放入到一个文件中方便一次性执行,这个程序文件就叫做shell脚本。shell脚本可以记录命令执行的过程和执行逻辑,以便以后重复执行,还可以批量、定时处理主机,方便管理员进行设置或者管理。它比Windows下的批处理更强大,比用其他编程语言编写程序的效率更高。

3、如何创建shell脚本

在创建shell脚本时,通常会新建以.sh或.script结尾的文件,但shell脚本不一定要以.sh结尾,以.sh结尾只是为了拿到该文件的人能够快速识别该文件为脚本,即命名规范。创建脚本后在进一步写入命令前,我们需要写入幻数#!/bin/bash#!/bin/bash可以理解为脚本文件中所有命令运行的环境。

实验步骤:
1)切换到一个空目录/mnt中,新建以.sh结尾的脚本文件,通常我们需要在进一步写入命令前写入#!/bin/bash和脚本首部信息
shell脚本基础知识详解_第1张图片
2)在写脚本首部信息时,为了避免每次手动输入,可以编写vim的子配置文件~/.vimrc(只针对脚本编写者自己生效)设置自动添加脚本首部信息的函数:func为函数类型标志;endfunc为函数结束标志;call表示调用;append表示添加语句。在append添加语句中,0表示在第一行添加,所要添加的内容需要用 “ ” 引起来;当需要添加多个内容时,可以用 . 隔开,strftime表示自动识别捕捉时间并以年/月/日格式输出显示。自动添加脚本首部信息的函数编写完成后,我们在编写脚本时可以通过以下两种方式调用该函数:
方法一: map设定按键调用函数,其中’s是固定格式
shell脚本基础知识详解_第2张图片
此时创建脚本后按设定的按键()即可调用自动添加脚本首部信息的函数WESTOS()
shell脚本基础知识详解_第3张图片
方法二: autocmd设定当新建以.sh或.script结尾的文件时自动调用函数
shell脚本基础知识详解_第4张图片
此时新建以.sh或.script结尾的文件时会自动调用添加脚本首部信息的函数WESTOS()
shell脚本基础知识详解_第5张图片

4、如何执行shell脚本

实验步骤:
1)创建并编写脚本westos.sh,写入命令(cal命令表示显示当前月的日历)
shell脚本基础知识详解_第6张图片
2)当脚本文件无可执行权限时,可以使用以下三种方式运行脚本:
方法一: sh westos.sh—手动在环境中开启指定解释器
shell脚本基础知识详解_第7张图片
方法二: . westos.sh—直接在当前环境中运行shell中的指令不开启新的shell
shell脚本基础知识详解_第8张图片
方法三: source westos.sh—直接在当前环境中运行shell中的指令不开启新的shell
shell脚本基础知识详解_第9张图片
3)当脚本文件有可执行权限时,可以使用以下两种方式运行脚本:
方法一: 绝对路径方式/mnt/westos.sh
方法二: ./westos.sh(本质上和方法一相同,因为.表示的就是当前路径)
以上这两种方式都是开启脚本中指定的shell并使用此shell环境运行脚本中的指令
shell脚本基础知识详解_第10张图片
4)脚本有无权限时运行方式的区别:新建脚本文件linux.sh输入cat命令(执行脚本时会一直处于运行状态,便于查看实验效果)
shell脚本基础知识详解_第11张图片
当脚本文件无可执行权限时使用 . linux.sh方式运行脚本,Ctrl+z打入后台,ps f用树状结构表示进程程序间的相互关系,可以看到脚本运行时是在当前shell中直接运行cat命令,fg调回前台后Ctrl+c结束脚本运行
shell脚本基础知识详解_第12张图片
当脚本文件有可执行权限时使用绝对路径方式运行脚本,Ctrl+z打入后台,ps f用树状结构表示进程程序间的相互关系,可以看到脚本运行时是在当前shell中再开了一个shell环境(#!/bin/bash指定的环境)后运行cat命令
shell脚本基础知识详解_第13张图片

5、如何对脚本进行调试

实验步骤:
1)创建并编写脚本westos.sh,写入命令如下
shell脚本基础知识详解_第14张图片
2)由于脚本中写入的cat命令格式错误,运行脚本时会一直处于运行状态,我们可以在运行脚本时使用-x 参数显示脚本运行过程,通过显示的信息来调试脚本,显示的信息中+表示运行的指令,不带+表示指令运行的结果,可以看到脚本在执行cat命令时出错
shell脚本基础知识详解_第15张图片
命令练习:
1)编写脚本host_messages.sh显示当前主机的名称、ip和登陆当前主机的用户
思路:使用hostname命令可以查看显示当前主机的名称;使用ifconfig ens3查看网卡信息后,通过管道使用awk命令截取inet关键字后没有字符的行的第二列即可得到当前主机的ip;使用$USERwhoami命令可以显示登陆当前主机的用户(\t表示一个tab键,\n表示换行,输出中有\t、\n时前面必须加-e参数执行动作)
shell脚本基础知识详解_第16张图片
在这里插入图片描述
2)编写脚本clear_log.sh,执行此脚本后可以清空日志
思路:首先对执行脚本的用户进行是否为超级用户的判断,如果不是超级用户则退出运行并提示以超级用户身份执行此脚本($0表示脚本本身),如果是超级用户则检测日志文件/var/log/messages是否存在,如果不存在则退出运行并提示日志文件不存在,如果存在则使用> /var/log/messages命令清空日志并显示日志已清理
shell脚本基础知识详解_第17张图片shell脚本基础知识详解_第18张图片

你可能感兴趣的:(Linux运维,linux,运维,shell,脚本语言)