shell 脚本编程

简介:用户通过shell向计算机发送指令的,计算机通过shell给用户返回指令的执行结果

通过shell编程可以达到的效果:提高工作效率、可以实现自动化

需要学习的内容:Linux 、  shell的语法规范

编写shell的流程:

      第一步:用vi/vim创建一个.sh的文件。

      第二步:在文件中进行开发。

      第三步:给文件赋予可执行权限。

      第四步:执行脚本。

本地变量: 

     定义变量:Var_Name=”Value“    变量名=“值” 。 

     引用变量: ${Var_Name}

     撤销变量:unset  Var_Name

局部变量:   定义:local Var_Name=”Value“。      在函数内部生效

环境变量:定义:export Var_Name=”Value“。    常用的环境变量:PS1、HOSTNAME、LANG 

 位置变量:主要用于向脚本中传递参数。   表示方法:  $1,$2,$3...$n      举例说明:./2.sh 1 5 9(传入的数据)

特殊变量:  $0   脚本自身名称        $?    上个命令的执行状态        $#  参数列表

变量命名要求:  只能使用数字、字母、下划线组成。  不能以数字开头。   不能使用程序中的关键字。

变量名的默认规则:  见明知意、   自定义变量小写、  换将变量大写。

补充环境变量:set命令可以显示当前系统上所有的变量。  export、env命令可以显示环境变量

bash条件判断基础

判断的作用:判断后续操作的前提条件是否满足;如果满足执行一种指令,不满足则执行另一种指令。

条件测试类型:   整形测试、字符测试、文件测试。

逻辑运算:

与运算    &&       真&&真=真;真&&假=假;假&&假=假;假&&真=假

或运算    | |      真| |真=真      真 | |假=真      假 | | 真 = 真     假 | | 假 = 假

非运算   !        !真=假          !假=真

 判断方式

   1) est EXPRESSION                 举例:test 2 -gt 1

     2)[ EXPRESSION ]                举例:[ 2 -gt 1 ]

3)    [[ EXPRESSION ]]             举例:[[ 2 gt 1 ]] 

4)     用命令执行状态来作为判断条件

查看脚本的执行过程:    bash  -x  脚本

bash条件判断语法格式

    if三种格式:

           单分支 :                   if 条件;then          分支1      fi

           双分支:          if 条件;then     分支1   else   分支2       fi

         多分支:      if 条件;then    分支1       elif 条件;then      分支2       elif 条件;then    分支3....  elif 条件n; then  分支n   else     分支  fi

练习题如下

               1)案例:90分成绩以上为 A;80分成绩以上为 B;70分成绩以上为 C; 60分成绩以上为 D;0分以上为     E。

答:
#!/bin/bashscore=$1if [ $score -gt 100 ];thenecho "pleas enter 0-100"elif [ $score -gt 90 ];thenecho "A"elif [ $score -gt 80 ];thenecho "B"elif [ $score -gt 70 ];thenecho "C"elif [ $score -gt 60 ];thenecho "D"else      echo "E"fi

2)案例:让用户指定一个文件,判断:如果有空白行,就显示空白行数,没有则提示“no“

#!/bin/bashfile=$1lines=`grep "^$" $file | wc -l`if [ $lines -gt 0 ];thenechho $lines
elseecho "no"
fi  

整形测试方法:整形测试通常都是二元测试,格式是:num1 oprand num.

操作符:  

   -gt:大于       -lt:小于    -ge:大于等于    -le:小于等于   -ne:不等于     -eq:等于

用户和脚本进行交互:   

       位置变量       red 命令:    read  -p  "参数"   变量名

               例:read  -p  "请输入第一个数字:" num1

3) 让用户通过键盘输入一个用户名 如果用户存在,就显示其用户的用户名和uid 否则,就显示用户不存在。

#!/bin/bash
read -p  "enter a user name:"  username
id  -u  $username &?》/dev/null
num=$?
if [ $num -eq 0 ];thenuid=`id -u $userName`echo "$userName is exists,uid is $uid"
elseecho "user is not exists"
fi

4)让用户通过键盘输入一个用户名,如果用户不存在就退出 如果用户的uid大于等于500,就说明是普通用户;输出”普通“ 否则,就说明这是管理员用户或系统用户。

        方法一:

#!/bin/bash
read -p "enter a user name" name
id -u $name &>/dev/null
num=$?
if [ $num -eq 0 ];thenuid=`id -u $name`if [ $uid -gt 499 ];thenecho "putong"elseecho "xt"fi
elseecho "not exists"
fi

   方法二:

#!/bin/bash
read -p "enter a user name" nameid -u $name &>/dev/null
num=$?
if [ $num -ne 0 ];thenecho "no"exit 0
fi
uid=`id -u $name`
if [ $uid -gt 499 ];thenecho "pt"
elseecho "xt"
fi

5)让用户通过键盘输入一个用户名,如果用户不存在就退出 如果其uid等于其gid,就说塔是个”good guy“ 否则就说明是”bad guy“。

#!/bin/bash
read -p "enter a user name" name
id -u $name &> /dev/null
num=$?
if [ $num -ne 0 ];thenecho "no"exit 0
fi
uid=`id -u $name`
gid=`id -g $name`
if [ $uid -eq $gid ];thenecho "good"
else echo "bad"
fi

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

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

相关文章

数据库系统体系结构-DBMS的三级模式结构、DBMS的工作方式、模式定义语言、二级映射

一、体系结构的概念 1、大多数DBMS遵循三级模式结构 (1)外模式 (2)概念模式 (3)内模式 2、DBMS的体系结构描述的应该是系统的组成结构及其联系以及系统结构的设计和变化的原则等 3、1978年美国国家标…

Java学习 (七) 面向对象--多态、object类

一、多态性 多态在java中的体现是 父类的引用指向子类的对象 格式: 父类类型 变量名 子类对象 1、代码案例 vi Person.java public class Person {public String name;public int age;//新增方法public void eat(){System.out.println("人吃饭");}…

github仓库的基本使用-创建、上传文件、删除

1.第一步 先点击左侧菜单栏的远程仓库 2.点击NEW 3.创建仓库 然后点击右下角的 CREATE 4.点击code 点击SSH,然后我出现了You don’t have any public SSH keys in your GitHub account. You can add a new public key, or try cloning this repository via HTTPS. 1&#xff…

【MySQL备份】Percona XtraBackup加密备份实战篇

目录 1.前言 2.准备工作 2.1.环境信息 2.2.配置/etc/my.cnf文件 2.3.授予root用户BACKUP_ADMIN权限 2.4.生成加密密钥 2.5.配置加密密钥文件 3.加密备份 4.优化加密过程 5.解密加密备份 6.准备加密备份 7.恢复加密备份 7.1.使用rsync进行恢复 7.2.使用xtrabackup命令恢…

深度学习之半监督学习:一文梳理目标检测中的半监督学习策略

什么是半监督目标检测? 传统机器学习根据训练数据集中的标注情况,有着不同的场景,主要包括:监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性,在介绍半监督目标检测方法之前,我…

【驱动篇】龙芯LS2K0300之红外驱动

实验目标 编写HX1838红外接收器驱动,根据接收的波形脉冲解码红外按键键值 模块连接 模块连接:VCC接Pin 2,GND接Pin1,DATA接Pin16 驱动代码 HX1838 GPIO初始化,申请中断,注意:GPIO48默认是给…

2023-2024华为ICT大赛中国区 实践赛网络赛道 全国总决赛 理论部分真题

Part1 数通模块(10题): 1、如图所示,某园区部署了IPv6进行业务测试,该网络中有4台路由器,运行OSPFv3实现网络的互联互通,以下关于该OSPFv3网络产生的LSA的描述,错误的是哪一项?(单选题) A.R1的LSDB中将存在…

Appium adb 获取appActivity

方法一(最简单有效的方法) 通过cmd命令,前提是先打开手机中你要获取包名的APP adb devices -l 获取连接设备详细信息 adb shell dumpsys activity | grep mFocusedActivity 有时获取到的不是真实的Activity 方法二 adb shell monkey -p …

【瑞吉外卖 | day01】项目介绍+后台登录退出功能

文章目录 瑞吉外卖 — day011. 所需知识2. 软件开发整体介绍2.1 软件开发流程2.2 角色分工2.3 软件环境 3. 瑞吉外卖项目介绍3.1 项目介绍3.2 产品原型展示3.3 技术选型3.4 功能架构3.5 角色 4. 开发环境搭建4.1 数据库环境搭建4.2 Maven项目构建 5. 后台系统登录功能5.1 创建需…

会声会影2024破解版下载 让视频编辑更简单、更有趣

在数字时代,视频已经成为我们生活中不可或缺的一部分。无论是记录生活、分享快乐,还是宣传产品、传递信息,视频都扮演着重要的角色。然而,对于很多人来说,视频编辑却是一个让人望而却步的领域。复杂的软件操作、繁琐的…

容器安全:等保合规性的基石

随着云计算和微服务架构的蓬勃发展,容器技术已经成为现代IT基础设施不可或缺的一部分。在网络安全等级保护制度(等保)的框架下,容器安全的要求日益凸显,成为等保合规性的基石。本文将深入探讨容器安全在等保中的重要性…

爽!强化学习+注意力机制,吞吐量提升了10多倍!

通过引入注意力机制,强化学习模型不仅能够更加高效地处理复杂的环境和任务,还能在学习和决策过程中实现更高的精度和适应性。 因此这种结合迅速成为了各大领域的研究热点,而且已经在实际应用中有了显著的性能提升。比如分散式强化学习框架SA…

在嵌入式商用里面哪款RTOS(实时操作系统)比较多人用?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 传统的RTOS和嵌入式Linu…

Qt中使用MySQL数据库详解,好用的模块类封装

本文将详细介绍如何在Qt应用程序中集成MySQL数据库,并封装实现好用的mysql数据库操作类。包括环境准备、连接数据库、执行查询及异常处理等关键步骤,同时包含mysql驱动的编译。分享给有需要的小伙伴,喜欢的可以点击收藏。 目录 环境准备 项…

javaSE期末练习题

文章目录 前言一、程序控制1.顺序结构问题描述解题思路题解 2.选择结构2.1 题1问题描述解题思路题解 2.1 题2问题描述解题思路题解 3.循环结构3.1 阶乘的求取问题描述解题思路题解 3.2 水仙花数问题描述解题思路题解 二、数组三、类与对象1.类与对象1.1圆类问题描述解题思路题解…

从云原生视角看 AI 原生应用架构的实践

本文核心观点: 基于大模型的 AI 原生应用将越来越多,容器和微服务为代表的云原生技术将加速渗透传统业务。API 是 AI 原生应用的一等公民,并引入了更多流量,催生企业新的生命力和想象空间。AI 原生应用对网关的需求超越了传统的路…

使用myCobot和OAK-D OpenCV DepthAI摄像头制作一个可以在眼前始终享受视频的手机支架!

引言 由于YouTube和Netflix的出现,我们开始躺着看手机。然而,长时间用手拿着手机会让人感到疲劳。这次我们制作了一个可以在你眼前保持适当距离并调整位置的自动移动手机支架,让你无需用手拿着手机。请务必试试! 准备工作 这次我们…

电脑文件自动备份:构建坚不可摧的数据防护网

在数字化浪潮的推动下,电脑已成为我们日常生活和工作中不可或缺的一部分,它承载着海量的个人信息、工作文档、学习资料等重要数据。然而,随着数据量的不断膨胀,数据安全问题也日益严峻。硬盘故障、系统崩溃、病毒攻击、人为误操作…

【中项第三版】系统集成项目管理工程师 | 第 2 章 信息技术发展

前言 第2章对应的内容大概率仅考察选择题,通读教程,速战速决。选择题分值预计在2-5分,属于必考的知识点。 2.1 信息技术及其发展 信息技术是在信息科学的基本原理和方法下的关于一切信息的产生、信息的传输、信息的发送、信息的接收等应用技…

2Python的Pandas:读取数据

1.读取Excel文件 1.1.读取数据 import pandas as pd# Excel 文件的 URL 或本地路径 url "https://www.gairuo.com/file/data/dataset/team.xlsx"# 使用 Pandas 的 read_excel 函数读取数据 try:df pd.read_excel(url)print(df.head()) # 打印 DataFrame 的前几行…