广告
返回顶部
首页 > 资讯 > 数据库 >shell学习之编程基础知识
  • 913
分享到

shell学习之编程基础知识

2024-04-02 19:04:59 913人浏览 安东尼
摘要

有学过编程语言的同学们都能够很快入手shell因为基础的字符类型,循环语句与C语言也差不多。以下我们来了解以下新手基础:1.在学习循环语句之前先了解一些基础的字符信息:$0、$1、$2、$?、$*、$#$0

有学过编程语言的同学们都能够很快入手shell因为基础的字符类型,循环语句与C语言也差不多。以下我们来了解以下新手基础:


1.在学习循环语句之前先了解一些基础的字符信息:

$0、$1、$2、$?、$*、$#

$0 代表sh程序自己,例如: sh auto_system_backup.sh ,那么这里的$0就是auto_system_backup.sh

    Usage: { $0 /boot /etc} 这是编程中的提示信息:得到的显示结果是Usage: { auto_system_backup.sh /boot /etc} 

$1代表的是执行脚本后面的第一个参数,例如:sh auto_system_backup.sh  /ect/ /tmp/ 那么这里的$1就是/ect/ ,自然/tmp/ 是$2

    当我们需要选择性的执行某些任务时$1等就会排上用场,例如:上面几张博文中提到的选择备份数据库中就用到了$1

------------------------------------------------------------------------------------------------

if [ -z "$1" ];then

        echo -e "\033[32mUsage:\nPlease Enter DataBase that you will backup \n-------------------------------\n\nUsage: { $0 Mysql } \033[0m"

        exit

fi

-------------------------------------------------------------------------------------------------

$?表示以上命令执行都没有错误,如果没有就返回0,主要用在代码中检查错误,如果有错就提示或者不再执行下面的代码

-------------------------------------------------------------------------------------------------

if [ $? -eq 0 ];then

        echo -e "\033[32mThe mysql Backup $MYsqlDB Successfully!\033[0m"

else

        echo -e "\033[32mThe Mysql Backup $MYSQLDB Failed,Please check.\033[0m"

fi

----------------------------------------------------------------------------------------------------

$* 代表的是执行脚本后面的所有参数

------------------------------------------------------------------------------

if [ -z "$*" ];then

        echo -e "\033[32mUsage:\nPlease Enter Your Backup Files or Directories\n-------------------------------\n\nUsage: { $0 /boot /etc} \033[0m"

        exit

fi

---------------------------------------------------------------------------------

$#表示的是执行脚本后面的所有参数的个数

以下一个脚本var02.sh可以显示以上的参数效果:

-----------------------------------------

#!/bin/bash

#define path variables

#by authors robin 2017

echo "#####################"

echo "The \$1 is $1"

echo "The \$2 is $2"

echo "The \$? is $?"

echo "The \$* is $*"

echo "The \$# is $#"

-----------------------------------------

执行脚本:sh var02.sh abc edf 

结果如下:

#####################

The $1 is abc  

The $2 is edf  

The $? is 0       

The $* is abc edf

The $# is 2 

---------------------------------


2.接下来了解一些基础的逻辑运算符:

-f 判断文件是否存在 eg: if [-f filename]  

-d 判断目录是否存在 eg: if [-d dir]

eq 等于      应用于:整型比较

-ne 不等于   应用于:整型比较

-lt 小于      应用于:整型比较

-gt 大于      应用于:整型比较

-le 小于或等于   应用于:整型比较

-ge 大于或等于   应用于:整型比较

-a 双方都成立(and)    逻辑表达式 -a 逻辑表达式

-o 单方成立(or)          逻辑表达式 -o 逻辑表达式

-z 空字符串  :-z "$*" 这里的$*和$1都要以字符的形式出现

------------------------------------

在以上的一些脚本你们也可以看到它们的身影,再仔细看看他们是起了什么效果自然也就知道了。剩下的在以后脚本解析中大家自己去理解


3.循环语句:for if while 等

三个判断语句都是编程中的基础之基础,在逻辑运算中也就是他们之间的互相嵌套来处理。以下给出几个简单的例子:

if语句:

一次判断语句,判断出[]中为0就执行之后的语句

--------------------- if_files_exist00.sh-------------------

#!/bin/bash

#juge dir exist

#fome net  2017

if [ ! -d /home/test1 ];then 

        mkdir -p /home/test1

else

        echo "This DIR is exist ,Please exist....."

fi

-------------------------------------------

以上的代码解释:如果/home/test1这个目录不存在我们就创建它如果存在就提示信息,结合上面的$1稍微修改一下它

------------------ if_files_exist01.sh------------------------


#!/bin/bash

#juge dir exist

#from net 2017

DIR=$1                        

if [ ! -d $1 ];then

        mkdir -p $1               

else

        echo "The dir $1 is exist ,Please exit....."

fi

---------------------------------------------------------------

sh if_files_exist01.sh /home/test02   --这里执行该脚本就要手动的添加参数了

在以上的脚本中我们还可以再加一个提示信息,提示用户输入参数。也就是判断$1是否为空,这里我就不多写了,自己结合前面的代码修改吧!

elif语句:

-------------------输入的分数判断优劣-----------------------------


#!/bin/bash

#juge scores

#from net 2017

scores=$1

if [ -z $scores ];then

        echo "Usage:{$0 60|80.}"   

        exit

fi

if [[ $scores -gt 85 ]];then

        echo "very Good!";

elif [[ $scores -gt 75 ]];then

        echo "good!";

elif [[ $scores -ge 60 ]];then

        echo "pass!";

else

        echo "no pass!";

fi

------------------------------------------------------

shell学习之编程基础知识


for语句:

多次判断,只要条件成立就一直循环处理

----------------以下的代码是计算1-15相加的总和---------

#!/bin/bash

j=0

for i in `seq 1 15`

do

j=`expr $i + $j`   --这里相当于C语言中j=i+j

done

echo $j

---------------------


while语句:

也是多次判断直到条件不成立为止

------------------------------------


#!/bin/bash

i=0

while (( $i < 10))

do

echo "The number is $i"

((i++))

done

----------------------------

select语句:

这语句主要用于选取,并获得选取的值,以下程序运行选取的2那么就会获得$i的值为数组中的第二个

语法结构:

select i in "1" "2" "3";

do

    代码。。。。。。。

done

----------------------------------

#!/bin/bash

select i in "Centos" "Redhat" "ubuntu";

do

        echo "Select you use system:"$i;

done

--------------------------------------

shell学习之编程基础知识

这个select语句大部分时候是结合case语句来处理问题


case语句:   在编写大型自动化脚本中占很重要的地位

---------------------------以下代码主要是用于选择性执行程序代码--------------

#!/bin/bash

#auto install LAMP

#from net 2017

case $1 in 

        Apache)

        echo "Wait install Httpd server...."

        tar -jxvf httpd-2.2.27.tar.bz2;cd httpd-2.2.27

        ;;

        Mysql)

        echo "Wait install mySQL Server...."

        ;;

        PHP)

        echo "Wait install mysql server...."

        ;;

        *)

        echo -e "\033[32mUsage:{$0 Apache|Mysql|php|help} \033[0m"

        ;;

esac

----------------------------------------------------------------------------

我们看看执行效果:

shell学习之编程基础知识

很显然在后面接了参数后就开始执行在该模块下的代码,每个模块下我们可以写任何的shell代码去执行。在后期的大规模服务部署中完全可以将所有代码揉在其中嘛。比如自动安装服务、配置服务,数据库备份、数据库恢复,目录数据同步、版本升级等等。都可以但是为了不要弄的很复杂建议不要写太多的功能在其中。以下结合case和select写一个简单的没有具体执行任务的小脚本:

--------------------------------auto_lamp_case01.sh---------------------------------------

#!/bin/bash

#auto install LAMP

#fom net 2017


PS3="Select your will exec Menu:"

select i in "Apache" "Mysql" "PHP"

do

case $i in 

        Apache)

        echo "Wait install httpd server...."

        tar -jxvf httpd-2.2.27.tar.bz2;cd httpd-2.2.27

        ;;

        Mysql)

        echo "Wait install mysql server...."

        ;;

        PHP)

        echo "Wait install mysql server...."

        ;;

        *)

        echo -e "\033[32mUsage:{$0 Apache|Mysql|PHP|help} \033[0m"

        ;;

esac

done

------------------------------------------------------------------------

由于在每个模块下只有简单的显示代码,我们可以在后期根据自己的需要将代码完善,执行效果如下

shell学习之编程基础知识

很显然这个代码更智能一些,在执行程序后可以提示更多选择,在这个脚本上可以扩展出很多东西从而实现更多的自动化处理。

您可能感兴趣的文档:

--结束END--

本文标题: shell学习之编程基础知识

本文链接: https://www.lsjlt.com/news/35817.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • shell学习之编程基础知识
    有学过编程语言的同学们都能够很快入手shell因为基础的字符类型,循环语句与C语言也差不多。以下我们来了解以下新手基础:1.在学习循环语句之前先了解一些基础的字符信息:$0、$1、$2、$、$*、$#$0 ...
    99+
    2022-10-18
  • shell编程基础之认识与学习BASH
    1、认识Bash 通过Shell将输入的指令与Kernel沟通,让Kernel控制硬件工作查看Shell:cat /etc/shell登录后预设的shell类型记录在/etc/passwd中,与账户相关命令...
    99+
    2022-06-04
    基础 shell BASH
  • linux shell脚本基础知识学习
    Shell脚本: 1、#! 指定脚本执行的shell2、# 注释 3、命令或语法结构echo "输入内容"echo 输出空行执行: 1、shell 脚本 sh example2、给shell脚本执行权...
    99+
    2022-06-04
    基础知识 脚本 linux
  • 学习shell脚本之前的基础知识[图文]
    日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员。目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目。有的单位甚至用...
    99+
    2022-06-04
    基础知识 脚本 图文
  • Spring5学习之基础知识总结
    目录1.概述2.入门Demo3.源码1.概述 1、Spring 是轻量级的开源的 JavaEE 框架 2、 Spring 可以解决企业应用开发的复杂性 3、Spring 有两个核心部...
    99+
    2022-11-12
  • 机器学习之基础知识(全)
    目录 1.机器学习概述 1.1 人工智能概述 1.1.1 人工智能使用场景 1.1.2 人工智能小案例 1.2 人工智能发展历程 1.2.1 图灵测试 1.2.2 发展历程 1.2.3 小结 1.3 人工智能主要分支 1.3.1 人工智能、...
    99+
    2023-08-31
    机器学习
  • Python 基础知识学习
    1、Python 基础教程      Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。2、执行Python程序     实例(Python 2.0+)     print "Hello, World!";  3、环境搭建...
    99+
    2023-01-31
    基础知识 Python
  • mysql基础知识学习
     1      说明数据库的命令时不区分大小写的,例如“CREATE DATABASE test”与“create database t...
    99+
    2022-10-18
  • 学习nginx基础知识
    目录一.什么是nginx?二.nginx能干什么?2.1 什么是正向代理?2.2 什么是反向代理?2.3负载均衡2.4 动静分离三.nginx基本操作3.1 nginx配置文...
    99+
    2022-11-12
  • shell编程基础知识小结
    1、文件类型介绍linux系统中主要包括以下七种文件类型: d 目录 - 普通文件 l 符号链接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 2、正则表达式正则表达式在shell编程...
    99+
    2022-06-04
    小结 基础知识 shell
  • Python基础知识学习之类的继承
    目录一、继承的格式二、单继承三、多继承四、重写父类方法五、打印继承关系六、调用父类方法七、私有属性与方法一、继承的格式 类的继承格式如下,括号中的为父类名。 class 类名(父...
    99+
    2022-11-12
  • shell编程基础知识有哪些
    这篇文章主要介绍了shell编程基础知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、文件类型介绍linux系统中主要包括以下七种文件类型: d 目录 - 普通文件...
    99+
    2023-06-09
  • Python基础学习之认识线程
    目录一、什么是线程?二、再来解释线程的代码三、线程触发业务函数,线程调用业务函数四、多了一个线程是哪个?五、总结一、什么是线程? 我们知道工人都是同时在工厂工作,复制各自的工作的。他...
    99+
    2022-11-13
  • Java基础学习之字符串知识总结
    目录一、前言二、String 类(字符串常量)2.1 String 类实例的创建2.2 String 对象的比较2.3 String对象的空值2.4 字符串拼接三、StringBui...
    99+
    2022-11-12
  • Redis学习笔记:基础知识
        一、NoSQL和关系型数据库区别     NoSQL非关系型数据库:Redis、MongoDB、HBase等,基于Key-Value存储,采用命令操作。     关系型数据库:Oracle、MySQL、DB2、SQL Se...
    99+
    2020-08-16
    Redis学习笔记:基础知识
  • 快速学习MySQL基础知识
    这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函...
    99+
    2022-05-26
    学习MySQL MySQL 基础
  • 学习 SQL 之前需要了解的基础知识
    目录一、数据库基础1.1 数据库1.2 表1.3 列和数据类型1.4 行1.5 主键二、什么是 SQL三、动手实践3.1 该选哪个 DBMS?四、小结 本文为 SQL 初学者介绍了 SQL 究竟是什么,以及它能做什么事情。因为 SQL 是...
    99+
    2016-05-04
    学习 SQL 之前需要了解的基础知识
  • python基础学习之递归函数知识总结
    目录一、递归函数使用注意点二、递归的效率问题三、递归函数引入四、递归的深度五、通过缓存解决递归限制六、递归函数使用示例一、递归函数使用注意点 递归函数一定要编写终止条件,否则将产生无...
    99+
    2022-11-12
  • Springboot基础学习之初识SpringBoot
    目录一、图示二、springboot是什么三、spring是如何简化开发的?四、springboot五、第一个spingboot程序一、图示 spring再简化:SpringBoot...
    99+
    2022-11-12
  • Three.js概述和基础知识学习
    目录1.Three.js简介2.Three.js的历史3.Three.js的应用4.基础知识4.1 场景(Scene)4.2 相机(Camera)4.3 渲染器(Renderer)4...
    99+
    2023-05-20
    Three.js概述基础知识 Three.js基础知识
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作