Linux中shell脚本的基础知识

news2024/11/26 16:43:08

目录

一、shell脚本的意义

二、如何创建shell脚本

三、如何执行shell脚本

四、如何对脚本进行调试

五、练习


一、shell脚本的意义

1、shell:脚本中命令的解释器
2、脚本的意义:

  • 记录命令执行的过程和执行逻辑,以便以后重复执行
  • 脚本可以批量处理主机
  • 脚本可以定时处理主机

二、如何创建shell脚本

#!/bin/bash  ##幻数

 1、编辑子配置文件~/.vimrc,自动添加说明
当新建立的文件以.sh.script结尾时,调用STITLE函数,注意函数名必须以大写字母开头,否则会报错
call:调用,append:添加,0:第一行,1:第二行,endfunc:结束

"map <F4> ms:call STITLE()<cr>'s
autocmd BufNewFile *.sh,*.script call STITLE()
func STITLE()
        call append(0,"################################################")
        call append(1,"# Author:        yyl")
        call append(2,"# Version:       ")
        call append(3,"# Create_Time:   ".strftime("%Y/%m/%d"))
        call append(4,"# Mail: yyl@westos.org")
        call append(5,"# Info: ")
        call append(6,"# ")
        call append(7,"################################################")
        call append(8,"")
        call append(9,"#!/bin/bash")
endfunc
2、对编写脚本时的缩进格式进行设定

sw=2:缩进长度为2,ts=2:1个tab表示2个空格
et:将tab转换为空格,ai:自动缩进

vim ~/.vimrc

autocmd BufNewFile *.sh setlocal sw=2 ts=2 et ai

3、示例:

三、如何执行shell脚本

  • 当脚本没有执行权限时

1、手动在环境中开启指定解释器

sh test.sh

2、直接在当前环境中运行shell中的指令不开启新的shell

source test.sh

. test.sh

3、开启脚本中指定的shell并使用此shell环境运行脚本中的指令
 

chmod +x test.sh

/xxx/xxx/test.sh

./test.sh

四、如何对脚本进行调试

sh -x test.sh

+:后跟运行指令
不带+:后跟运行的输出

五、练习

练习:

1 ip_show.sh 网卡 显示当前的IP

[ -z  "$*" ] &>/dev/null &&{
        echo "未指定网卡,请指定"
        exit
}


ifconfig "$*" &>/dev/null  ||{
        echo "此网卡不存在"
        exit
}

ifconfig "$*" | awk '/inet\>/{ print $2 }'

2 host_messages.sh 显示当前主机的名称,ip登陆当前主机的用户

hostname: xxxxx

ipaddress: xxxx.xxxx.xxx.xxx

username: root

echo -e "hostname:\t$(hostname)"
echo -e "ipaddress:\t$(ifconfig ens33 | awk '/inet\>/{print $2}')"
echo -e "username:\t$USER"

3. clear_log.sh 执行次脚本后可以清空日志

[ "$USER" == "root" ] || {
  echo "Please run $0 with root !!!"
  exit
}

[ -e "/var/log/messages" ] || {
  echo "No logfile here !!!"
  exit
}

> /var/log/messages && {
  echo "logfile is cleared !!!"
  exit
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1146821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlabR2021a正版免费使用

目录 matlab介绍&#xff1a; 安装&#xff1a; matlab介绍&#xff1a; MATLAB&#xff08;Matrix Laboratory的缩写&#xff09;是一种高级技术计算和编程环境&#xff0c;由MathWorks公司开发。它在科学、工程、数据分析和数学建模领域中广泛应用&#xff0c;为用户提供了…

【RTOS学习】互斥管理 | 调试 | 信息统计

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 互斥管理 | 调试 | 信息统计 &#x1f349;互斥管理&#x1f330;屏蔽中断&#x1f330;暂停调度器…

VMware Horizon 8 2309 Enterprise虚拟桌面

VMware Horizon 8 2309 Enterprise虚拟桌面 一、虚拟桌面二、产品发布三、VMware Horizon 8 2309 Enterprise1.VMware Horizon 8 2309 Enterprise产品清单2.安装部署3. 优化工具总结 一、虚拟桌面 利用虚拟桌面和应用随时随地进行访问。 从云端进行管理 使用云端控制台和 Saa…

IO线程及相关函数

进程是资源分配的最小单位&#xff0c;线程是cpu调度的最小单位 一、概念&#xff1a; 线程指的是共享相同地址空间的多个任务 是一个轻量级的进程&#xff0c;为了提高系统的性能引入线程&#xff0c;线程和进程都参与统一的调度 在同一个进程中创建的线程共享该进程的地址空间…

预制菜配送小程序商城的效果如何

预制菜是近些年热度较高的新赛道&#xff0c;很多商家品牌入局&#xff0c;而投入到市场中也受到不少商家的喜欢&#xff0c;各种品牌和经销商层出不穷&#xff0c;目前各品牌主要以拓展市场和研究菜品为主&#xff0c;而线上无疑是很好的宣传销售渠道。 接下来让我们看看通过…

搭建gnn环境

1.无法激活 激活pytorch遇到报错usage: conda-script.py [-h] [--no-plugins] [-V] COMMAND ... conda-script.py: error: arg-CSDN博客 参考教程 【精选】手把手教你在windows10安装GNN相关环境&#xff08;torchtorch_geometricrdkitdeepchem&#xff09;_gnn环境相关的包-…

Docker Consul概述及构建

Docker Consul概述及构建 一、Consul概述1.1、什么是Consul1.2、consul 容器服务更新与发现1.3、服务注册与发现的含义1.4、consul-template概述1.5、registrator的作用 二、consul部署2.1、环境配置2.2、在主节点上部署consul2.3 、配置容器服务自动加入nginx集群2.3.1、安装G…

【Linux】:进程程序替换

进程程序替换 一.替换原理二.替换函数三.exec类函数 一.替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支)&#xff0c;子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时&#xff0c;该进程的用户空间代码和数据完全…

CleanMyMac X2024永久免费版mac电脑管家

日常使用中&#xff0c;很多用户忽略了Mac清除数据的重要性。当Mac运行速度越来越慢&#xff0c;发热严重&#xff0c;储存空间总是不足的时候&#xff0c;才意识到保持日常清理才是解决这些问题的根本。经常清理Mac&#xff0c;还有你意想不到的好处。 提高系统性能&#xff…

React-快速搭建开发环境

1.安装 说明&#xff1a;react-excise-01是创建的文件名 npx create-react-app react-excise-01 2. 打开文件 说明:we suggest that you begin by typing:下面即是步骤。 cd react-excise-01 npm start 3.显示

HIT_OS_LAB1 调试分析 Linux 0.00 引导程序

操作系统实验一 姓名&#xff1a;董帅学号&#xff1a;2021111547班级&#xff1a;21R0312 1.1 实验目的 熟悉实验环境掌握如何手写Bochs虚拟机的配置文件掌握Bochs虚拟机的调试技巧掌握操作系统启动的步骤 1.2 实验内容 1.2.1 掌握如何手写Bochs虚拟机的配置文件 boot: f…

拉扎维模拟CMOS集成电路设计西交张鸿老师课程P10~13视频学习记录

--------------------------------------------------------------------------------------------------------------------------------- p10 短沟道&#xff0c;除了沟长调&#xff0c;还可能出现速度饱和问题&#xff1b; 但是在拉扎维这本书里面没有考虑这个问题&#…

python随手小练12(南农作业题)

题目&#xff1a; 设有四个字母:a bcd,能组成多少个互不相同且无重复数字的三个字母的单词?各是什么? 解题思路:遍历全部可能的组合,把有重复的删除 具体操作&#xff1a; total 0 s [0, a, b, c, d] #注意&#xff1a;不能写成[0, a, b, c, d] for i in range(1, 5): …

为什么数组的下标是从0开始呢?

我们在许多的编程语言中&#xff0c;大部分的数组下标都是从零开始的&#xff0c;那为什么不是从一开始的呢&#xff1f; 首先我们&#xff0c;先要了解数组相关的定义。 数组&#xff08;Array&#xff09;是一种线性表数据结构。它用一组连续的内存空间&#xff0c;来存储一…

关于FTP的一些往事

公司每天都要从美国的服务器下载大量的语音文件。然后根据语音的内容完成相关的医疗报告。不同语音的实时性要求是不一样的&#xff0c;有些要求6小时内完成&#xff08;TAT6&#xff09; &#xff0c;有些则是12小时。中美之间的网速又特别慢&#xff0c;所以&#xff0c;如何…

计算机网络基础三

课程目标 理解路由表的作用 能够读懂路由表信息 能够使用图形抓包工具 wireshark 进行数据包的抓取 &#xff0c;如&#xff08; TCP/IP 的三次握手四次断开&#xff09; 一、路由表 思考&#xff1a; 什么是交换,什么是路由,什么是路由表&#xff1f;1. 交换是指同网络访…

在vscode中运行c++代码,windows 11系统

缘起 工作中用mac电脑&#xff0c;装了vscode和c&#xff0c;在家里的windows电脑上&#xff0c;也想运行vscode&#xff0c;这时候就遇到问题了。现在将问题解决方案记录下来&#xff0c;以供参考。 解决方案 开始比较懒&#xff0c;直接百度一下&#xff0c;找了几篇文章&…

高阶数据结构学习 —— 图(1)

文章目录 1、并查集2、了解图3、邻接矩阵4、压缩路径5、基本概念6、邻接表 1、并查集 并查集是一个森林&#xff0c;是由多棵树组成的。这相当于整套数据&#xff0c;分成多个集合。查找有交集的集合们&#xff0c;会把它们合并起来&#xff0c;所以叫并查集。 一开始拿到的是…

idea上怎么将新创建项目转为maven项目

场景 在刚创建的一个项目中&#xff0c;往往没有被识别为maven项目&#xff0c;怎么做呢&#xff1f; 方法 然后选maven&#xff0c;这样这个项目就变成了maven项目

计数排序——不用比较的排序

原理&#xff1a; 代码&#xff1a; void CountSort(int* a, int n) {int max a[0];int min a[0];for (int i 0; i < n; i){if (a[i] > max){max a[i];}if (a[i] < min){min a[i];}}int grang max - min 1;int* count (int*)malloc(sizeof(int) * grang);me…