AI智能
改变未来

快速了解shell编程语言,及shell脚本编写使用(1)


shell脚本编程(1) ——shell的基本概念

各位博客们大家好啊!这是我个人的第二篇博客,写的不好的地方,希望大家多多指点,本偏文章主要是介绍shell脚本的一个基础,让大家能够了解到shell这款编程语言(* ^ – ^ *)

文章目录

  • shell脚本编程(1) ——shell的基本概念
  • 一、shell的概述
  • 1、什么是shell
  • 2、shell的使用方式
  • 3、常见的shell程序种类
  • 4、bash的基本特性
  • 二、shell脚本编辑及执行
    • 1、什么是shell脚本
    • 2、脚本构成及执行方式
  • 三、shell变量
    • 1、变量的概述
    • 2、变量的种类
    • 3、变量值及范围控制
  • 四、shell中数值运输
    • 1、整数运算
    • 2、小数运算
  • 五、条件测试
    • 1、test测试
    • 2、常见的测试操作
    • 3、组合多个条件

    一、shell的概述

    1、什么是shell
    • Shell中文翻译为贝壳,即相当于操作系统的外壳
    • Shell是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。
    • Shell 既是一种命令语言,又是一种程序设计语言
    • 负责向内核翻译及传达用户程序指令
    2、shell的使用方式
    • 交互式(命令行):人工干预、智能化程度高、逐条解释执行、效率低
    • 非交互式(脚本):提前编写、智能化难度大、批量执行、效率高、方便后台执行
    3、常见的shell程序种类
    • /bin/bash 、/bin/sh 、/sbin/nologin 、/bin/tach 、/bin/ksh
    4、bash的基本特性
    • 快捷键、tab键补齐、命令历史、命令别名、重定向、管道……

    二、shell脚本编辑及执行

    1、什么是shell脚本
    • 提前写好可执行的shell命令语句,能够完成特定的任务文件
    • 优点:可顺序、批量化处理,解释型程序
    • 简单脚本编写的“四步走”:
      ① 新编辑文本文件 vim /mnt/first.sh
      ② 编写脚本语句 echo ‘Hello world’
      ③ 添加X执行权限 chmod +x /mnt/first.sh
      ④ 绝对路径执行 /mnt/first.sh
    2、脚本构成及执行方式
    • 规范的脚本构成(三要素)

      ①脚本声明(使用哪种解释器)			        #!/bin/bash②注释信息(步骤、思路、用途、变量含义等)     #输出Hello world③可执行的语句				            	echo ‘Hello world’
    • 脚本的执行方式
      ①方式一:作为“命令字”(指定脚本的文件路径,前提是有X权限)
      ②方式二:作为“参数”(bash 脚本文件路径,前面加解释器名,不需要X权限)

    三、shell变量

    1、变量的概述
    • 什么是变量

      -以固定名称存放,可能会变化的值(以不变名称储存可以变化的值)-提高脚本对任务的需求、运行环境变化的适应能力-方便在脚本中重复使用
    • 定义/赋值/查看/取消变量

      -	定义/赋值变量:    变量名=变量值、X=12-	查看变量:         echo $变量名、echo${变量名}-	查看所有的变量:    set-	查看常用的环境变量: env-	手动取消变量:      unset 变量名 、变量名=空
    • 定义变量注意事项

      - 若指定的变量名已存在,相当于为此变量重新赋值- 等号两边不要有空格- 变量名由字母/数字/下划线组成,区分大小写- 变量名不能以数字开头,不要使用关键字和特殊字符
    2、变量的种类
    • 环境变量

      - 变量名一般都大写,用来设置用户/系统环境,由系统定义赋值完成- 常见的环境变量:HOSTNAME主机名、USER用户名、UID用户的id号、SHELL用户使用的解释器、PWD当前所在路径、PS1一级提示符、PS2二级提示符  HOME家目录PATH存储命令的路径
    • 位置变量

      在执行脚本时提供的命令行参数$n,(n为序号 $1、$2....${10}、${11}...
    • 自定义变量

      用来保存脚本程序的执行信息直接使用这些变量、不能直接为这些变量赋值$# 已经加载的位置变量(参数)的个数$? 程序退出后的状态值,0表示正常,其他值表示异常$$当前运行进程的PID号$*所有位置变量的值$0当前所在进程或脚本名
    3、变量值及范围控制
    • shell中三种定界符

      - 双引号 ” ”      允许扩展,以$引用其他变量- 单引号 ’ ’      禁止扩展,即便$也视为普通字符(可以屏蔽特殊符号)- 反撇号 ` `  	 将命令的执行结果作为变量值、或使用$( )
    • 屏蔽敲键盘的时候显示信息

      - ssty  -echo   屏蔽回显- stty  echi    恢复回显
    • 发布全局变量(进入子进程也是可以显示该变量)

      - export  		发布或者创建全局变量- export -n 		取消全局变量
    • 交互式输入变量值(从用户获取变量的值)

      - read  -p  \"加提示信息\"

    四、shell中数值运输

    1、整数运算
    • 基本运算类别,四则运算、取余运算

      加法:num1 + num2减法:num1 - num2乘法:num1 * num2除法:num1 / num2求模:num1 % num2
    • expr运算工具 (运算符两边要有空格,乘法需要\\转义*的特殊含义)

      格式: expr 整数1 运算符 整数2 ...
    类型 运算符 示例
    加法 + expr 42 + 33
    减法 expr 42 – 33
    乘法 \\* expr 42 \\ * 33
    除法 / expr 42 / 33
    取余 % expr 42 % 33
    • $[ ]、$(( ))算式替换运算

      - 格式:$[ 整数1  运算符 整数符]- 乘法操作*无需转义,运算符两侧可以无空格           如:x=10- 引用变量可省略$符号                            echo $[x+1]  或者  echo $((x*21))- 计算结果替换表达式本身,可结合echo命令输出        结果分别为:11和210
    • 变量的自增/减等操作

      - 使用$[]替换,或者let命令来完成,结合echo命令查看结果- let  不显示运算结果,通常用于创建或修改变量- 使用let创建变量:let a=10+10  创建变量a,值是20

    2、小数运算
    • 使用bc实现小数运算

      - 多数Linux系统默认安装此工具- 支持高精度的数值运算- 直接运行bc可进入交互式运算界面, quit退出- 设置scale=n可约束小数位
    [root@svr5 ~]\\# bc			//直接命令行执行bc打开bcit算器程序12.23*10.22					    //提交表达式即输出结果124.99							//默认输出结果为两位小数scale=4							//将可用的小数显示为4位12.23*10.22					    //提交表达式即输出结果124.9906
    • 结合管道向bc发送表达式

      - 多个表达式以分号分隔- 通过echo命令+管道传递要计算的表达式
    [root@svr5 ~]\\# A=12.34[root@svr5 ~]\\# echo \"$A*56.789\" | bc                    //单表达式700.7 76[root@svr5 ~]\\# echo \"scale=4; $A*56.789;5/3\" | bc       //多表达式700.7 7621.6666
    • 小数值的比较

      - echo \"数值1比较符数值2\"| bc- 如果表达式成立,则返回的计算结果为1 ,否则返回0- 常见比较操作: >、>=、<、<=、= =、!=
    [root@svr5 ~]\\# A=12.34 ; B=56.78[root@svr5 ~]\\# echo \"$A<= $B\" | bc            //A是否小于或等于B1[root@svr5 ~]\\# echo \"$A>$B\" | bc              //A是否大于或等于B0

    五、条件测试

    1、test测试
    • 语法格式

      test   选项    参数[ 选项  参数 ]help test   #查阅帮助
    2、常见的测试操作
    • 字符串比较
    操作符 含义 举例
    == 是否相等 [ a == b ]
    != 是否不相等 [ a != b ]
    -z 判断变量是否为空 a=[ -z $a ]
    !-z 判断变量是否非 a=[ ! -z $a ]

    使用echo $?检查结果

    • 比较整数值的大小
    操作符 含义 举例
    -eq 等于(Equal) [ x -eq 100 ]
    -ne 不等于(Not Equal) [ x -ne 100 ]
    -ge 大于或等于(Greater or Equal) [ x -ge 100 ]
    -le 小于或等于(Lesser or Equal) [ x -le 100 ]
    -gt 大于(Greater) [ x -gt 100 ]
    -lt 小于(Lesser) [ x -lt 100 ]
    • 文件状态测试
    操作符 含义 举例
    -e 判断对象是否存在( Exist),若存在则结果为真 [ x -e /mnt ]
    -d 判断对象是否为目录( Directory), 是则为真 [ x -d /mnt ]
    -f 判断对象是否为一般文件( File), 是则为真 [ x -f /etc/passwd ]
    -r 判断对象是否有可读( Read )权限,是则为真 [ x -r /mnt ]
    -w 判断对象是否有可写( Write )权限,是则为真 [ x -w /mnt ]
    -x 对象是否有可执行( eXcute )权限,是则为真 [ x -x /mnt ]
    3、组合多个条件
    • 一个逻辑分隔判断
    操作符 含义 举例 备注
    && 之前任务成功就执行之后任务 ls && ls 前一个ls执行成功了,又执行了第二个ls,共执行2次ls 给定条件必须都成立,整个测试结果才为真
    || 之前任务失败才执行之后任务 ls || ls 前一个ls执行成功了,不执行第二个ls,共执行1次ls 只要其中一个条件成立,则整个测试结果为真
    • 多个逻辑符号组合判断
    操作符 含义 举例
    && 前后任务都成功,算该组成功 ls && ls && ls 、 ls && ls || ls
    || 前后任务有一个成功,就算该组成功 ls || ls || ls 、 ls || ls && ls

    解析:

    ls && ls && ls   //第1个ls成功,执行第2个, 前2个都成功,执行第3个ls && ls || ls   //第1个ls成功,执行第2个,前2个都成功,不执行第3个ls || ls || ls   //第1个ls成功,不执行第2个,前2个算成功,不执行第3个ls || ls && ls   //第1个ls成功,不执行第2个,前2个算成功,执行第3个[ root == $USER ] && echo \"我是管理员\" || echo \"我不是管理员\"    //输出我是管理员

    结束啦
    这篇的基本介绍就先写到这里,后面会继续更新shell脚本的一些常用的用法以及后面企业中一些实用的shell脚本的运用,感谢你们的浏览,也希望对你们有所帮助,你的点赞是我努力的动力,谢谢你们!

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 快速了解shell编程语言,及shell脚本编写使用(1)