RHCE考试基础(二)

Shell脚本基础教程
本文介绍Shell脚本的基础知识,包括脚本的组成、变量使用、条件测试、选择结构及循环控制等内容,适合初学者入门。

shell脚本基础

shell:语言

脚本:可以运行,一个文件,可以实现某种功能(命令的堆积)

    解释型程序

    顺序,批量执行

    [root@server0 ~]# vim /opt/test.sh

    echo hello world

    [root@server0 ~]# chmod +x /opt/test.sh

    [root@server0 ~]# /opt/test.sh

 

shell脚本的一般组成

    #!环境声明(Sha-Bang

    #注释文本

 可执行代码

    

shell脚本使用技巧

    管道功能

    重定向输出

    >:只收集前面命令的正确输出

    2>:只收集前面命令的错误输出

    &>:收集前面命令的所有输出

    黑洞设备:/dev/null

 

使用变量

变量:容器 以不变名称,存放可能变化的值

作用:让脚本适用多变的环境

为变量赋值:

    变量名=变量值

    read 为变量赋值,读取用户在键盘上的输入,将用户输入的内容赋值给变量

    

    #! /bin/bash    #环境声明

    read -p '请输入用户名:' user

    read -p '请输入密码:' passwd

    useradd $user &> /dev/null

    echo 用户$user创建成功

    echo $passwd | passwd --stdin $user &> /dev/null

    echo 用户$user密码设置成功

 

注:等号两边不要有空格

     只能由字母/数字/下划线组成,区分大小写

     变量不能以数字开头,不要使用关键字和特殊字符

 

查看/引用变量

基本格式

引用变量值:$变量名

查看变量值:echo $变量值、echo ${变量值}

    $[ ]:代表运算

    $( )``:将命令输出结果作为参数  [root@server0 opt]# mkdir mariadb-`date +%F`

    单引号' ':取消特殊字符的意义  [root@server0 opt]# echo '? * [] {}'

 

举例:生成随机数 $RANDOM

    范围为 099 之间的随机数(求余运算)[root@server0 opt]# echo $[$RANDOM%100]

 

变量的种类

环境变量:

    PWDPATHUSER(当前用户名)LOGNAME

    SHELLHOME

    USER:存放登陆的用户身份

    PATH:存储命令的搜寻路径

               执行命令时,都会去PATH变量值中去寻找该命令的执行程序

               如果找到就执行,不能则报告命令找不到

    [root@server0 ~]# echo $PATH

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    [root@server0 ~]# cp /PATH/TO/SOMEWHERE /usr/bin     #将自己的可执行程序添加到搜索路径    

      

位置变量(执行脚本时提供命令行参数):

    表示为$nn为序号

    $1$2...${10}${11}...

    [root@server0 opt]# vim /root/test.sh

        #! /bin/bash   #环境声明

        cat -n $1 | head -$2

    [root@server0 opt]# chmod +x /root/test.sh

    [root@server0 opt]# /root/test.sh /etc/passwd 5

预定义变量(用来保存脚本的执行信息):

    $# 已加载的位置变量的个数(计算使用位置变量的总数)

    $* 所有位置变量的值

    $? 程序退出后的状态值,0表示正常,其他值异常

 

条件测试及选择

检查文件状态:

    -e:存在为真

    -d:存在且为目录为真

    -f:存在且为文件为真

    -r:存在且对对象有读权限为真

    -w:存在且对对象有写权限为真

    -x:存在且对对象有执行权限为真

比较整数大小(带g的都有大于,带e的都有等于,带l的都有小于)

    -gt:大于

    -ge:大于等于

    -eq:等于

    -ne:不等于

    -lt:小于

    -le:小于等于

字符串比对

    ==:字符串一致为真

    !=:字符串不一致为真

 

if选择结构

if双分支处理:

    if[条件测试]then

       命令序列01

    else

      命名序列02

    fi

 

举例:

      #! /bin/bash

     num1=$[$RANDOM%10]

     read -p '请您输入09之间的数:' num2

     if [ $num1 -eq $num2 ];then

       echo 恭喜您猜对了

     else

       echo 再见

     fi

 

if多分支处理:

    if[条件判断1]then

       命令序列01

    elif[条件判断1]then

       命名序列02

    elif[条件判断1]then

       命名序列03

    else

       命令序列04

    fi

 

举例:判断用户输入的成绩

    如果  成绩大于等于90  则输出优秀

    如果  成绩大于等于80  则输出良好

    如果  成绩大于等于70  则输出及格

    如果  成绩大于等于60  则输出仍需努力

    以上条件均不满足  则输出再牛的肖邦,也弹不出哥的悲伤

 

#! /bin/bash

read -p '请输入您的成绩:' nsd

if [ $nsd -ge 90 ];then

  echo 优秀

elif [ $nsd -ge 80 ];then

  echo 良好  

elif [ $nsd -ge 70 ];then

  echo 及格

elif [ $nsd -ge 60 ] ;then

  echo 仍需努力

else

  echo 再牛的肖邦,也弹不出哥的悲伤

fi

 

列表式循环

for循环结构:

    for 变量名 in 值列表

    do

        命令序列

    done

 

#! /bin/bash

for a in nsd11 nsd12 nsd13 nsd14 nsd15

do

  useradd $a

  echo 用户$a创建成功

done

 

 

参考案例1

[root@server0 ~]# vim /root/foo.sh

   #! /bin/bash

   if [ $# -eq 0 ];then  #判断位置变量的个数是否为0

       echo '/root/foo.sh redhat|fedora' >&2 #将正确的输出结果变成错误的输出

       exit 1  #脚本退出返回值

   elif [ $1 == redhat ];then

       echo fedora 

   elif [ $1 == fedora ];then

       echo redhat

   else

       echo '/root/foo.sh redhat|fedora' >&2

       exit 1

   fi

[root@server0 ~]# chmod +x /root/foo.sh

 

参考案例2

    #!/bin/bash

    if [ $# -eq 0 ];then

        echo 'Usage:/root/batchusers' >&2

        exit 1

    elif [ -f $1 ];then

        for i in `cat $1`

    do

        useradd -s /bin/false $i

        echo $i成功创建

    done

else

    echo 'Input file not found' >&2

    exit 2

fi

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值