【Shell篇<Ⅰ>】——shell脚本、变量、数值运算

让我们进入今天的学习吧!
💪Keep  trying💪

在这里插入图片描述

一、shell概述

1.1 什么是shell?

  Linux内核与用户之间交互的解释器程序。直白点说就是人和Linux之间语言的翻译官,Linux听不懂人话,但能听懂shell说的话。

  • shell解释器有很多,常用的是 /bin/bash

2.2 shell的使用方法

  • 交互式——命令行
    也就是在终端通过命令行的方式对Linux系统进行管理
    特点:人工干预,智能化程度高;但是需要逐条去解释,效率低下,不能解放运维人员的双手
  • 非交互式——脚本
    特点:需要提前对整个结构进行设计,智能化难度大;批量执行效率高,方便在后台悄悄运行

3.3 bash解释器的特性

  • 支持快捷键、tab补全、历史命令、别名、标准输入输出、重定向、管道等操作

二、shell脚本的编写及执行

2.1 什么是shell脚本?

  • 提前规划并写好的可执行语句,能够完成特定的任务的可执行文件
  • 特点:按顺序,批量进行处理
  • 常见的脚本语言:bash shell、Python、prel、Ruby、PHP

2.2 脚本的构成及执行

  • 规范化脚本
    • #!:声明脚本使用的解释器
    • #:对脚本进行注释
    • 可执行的shell语句
  • 脚本的执行方法
    • 给脚本文件添加可执行(x)权限,使用绝对路径去执行
    • bash 脚本文件
    • source 脚本文件
    • 这里需要注意一下,x权限、bash 和 source 执行脚本的一个区别。使用x权限和吧bash执行脚本,bash解释器本身会再生成一个bash子进程去执行脚本,在脚本执行完之后这个子进程就会消亡;而source执行脚本时,是调用原本的这个bash去执行脚本,执行完脚本后不会消亡。【这种区别可能会造成局部变量的影响,因为全局变量是基于当前】,工作中一般都会使用x权限的形式执行脚本。
      来看下面这个例子,你就能很清晰的发现这俩到底有啥区别,编写一个很简单的脚本
#!/bin/bash
a=100  # 定义一个变量a

我们用上面两种不同的方法来执行一下这个脚本
在这里插入图片描述可以很清楚的看到,用bash执行的脚本,在脚本结束后,a这个变量就跟这bash子进程一起消亡了,而source就不会。

  • 脚本实例——编写脚本创建yum仓库
#!/bin/bash
#搭建yum软件仓库
mkdir /abc
mount /dev/cdrom /abc
rm -rf /etc/yum.repos.d/*.repo
echo "[abc]
name=abcabc
baseurl=file:///abc
enabled=1
gpgcheck=0" > /etc/yum.repos.d/abc.repo

三、shell变量

3.1 变量的设置和取消

  • 注意:变量只能由数字、字母、和下划线组成,并且不能以数字开头,变量赋值时,等号两边不能有空格。

  • 自定义变量
    格式:变量名=值,如:a=100
    第一次为变量声明,第二次就是重新赋值

  • 查看变量
    格式:$变量名

  • 取消变量
    格式:变量名=空 或者 unset 变量名

3.2 环境变量

  • 环境变量名一般为纯大写,由系统维护

  • env:列出所有的环境变量
    set:列出当前所有的变量

  • 常见的环境变量

    • USER:当前用户名
    • UID:当前用户的id号
    • HOME:当前用户家目录
    • HOSTNAME:主机名
    • SHELL:当前用户的解释器
    • PWD:当前位置
    • PATH:存储命令的路径
    • PS1:一级提示符
    • PS2:二级提示符(就是在续行的时候显示的提示符,\为续行符)
      在这里插入图片描述

3.3 预定义变量

  • 用来保存脚本程序的执行信息,配合脚本使用,直接使用即可,不要赋值
    • $*:执行脚本时后面所有位置参数
    • $#:执行脚本时后面位置参数的个数
    • $$:当前程序的进程号(该号码是随机的)
    • $?:判断上一条指令是否执行成功,0是成功,非0是失败
    • $0:当前所在的进程或者脚本名字

3.4 位置变量

  • 在命令行执行脚本时,脚本后面所跟的参数
    • $1:执行脚本时,脚本后面所跟的第一个参数
    • $2:执行脚本时,脚本后面所跟的第二个参数
    • $3:执行脚本时,脚本后面所跟的第三个参数)

3.5 变量的作用范围

  • 局部变量:新定义的变量只在当前的shell环境(bash进程)中有效
  • 全局变量:新定义的变量在当前的shell及子shell中都有效(对父shell无效)
  • 发布全部变量:export 变量名
    取消全局变量: export -n 变量名

四、shell的其他语法

4.1 三种定界符

  • 双引号:可正常调用引号里面的变量
  • 单引号:屏蔽特殊符号的功能,全部当做字符串进行输出
  • 反撇号:获取命令的执行结果,等同于 $(命令)

4.2 read 标准输入输出

  • read:从键盘读入变量的值再进行赋值
  • 格式:read [-p "提示信息" -t 超时时间] 变量名
    注意:-t选项可以指定超时时间,单位为秒,如果超过这个时间还没输入值,那么程序就会直接退出。
    看下面这个脚本
#!/bin/bash
read -p "请输出用户名: " username
read -p "请输入密码: " -t 10 password #10s内不输入密码就无效了
echo $username
echo $password

执行结果为:
在这里插入图片描述

4.3 终端显示控制

  • 关闭终端输出:stty -echo
  • 开启终端输出:stty -echo

五、数值运算

5.1 expr 运算工具

  • 计算指定的表达式并输出计算结果(只能对整数进行运算)
  • 格式:expr 整数1 运算符 整数2
  • 运算符:+ - * / %
    注意:做乘法运算是乘号要用单引号引起来或者用\进行转义
    在这里插入图片描述

5.2 $[] 和 $(()) 运算

  • 格式:直接将算式写在括号里面即可
  • 注意:计算完之后不会输出结果,因为式子本身就是结果,需要输出就echo 而且,运算变量的话,不需要再加$号了。
    在这里插入图片描述

5.3 let 运算符

  • 用于变量的创建及自增自减
  • 创建:
    在这里插入图片描述
  • 自增:
    在这里插入图片描述

5.4 使用 bc 实现小数运算

  • 命令行执行指令 bc 可以进入交互式计算器,quit 退出
  • 非交互式使用
    scale可以定义结果的小数位数。
    在这里插入图片描述

         👆回到顶部👆

在这里插入图片描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值