shell编程规范与变量

shell编程规范与变量

shell脚本概述

什么是shell:

shell 是操作系统的最外层。shell 合并编程语言以控制进程和文件,以及启动和控制其它程序。shell 通过提示您输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来管理您与操作系统之间的交互。

shell的作用

  • 命令解释器,“翻译官”:

介于系统内核与用户之间,负责解释命令行

在这里插入图片描述

Linux中有哪些shell

检查一下/etc/shells这个文件(Linux所包含的shell)

在这里插入图片描述

shell脚本的概念:

  1. 将要执行的命令按顺序保存到一个文本文件
  2. 给该文件可执行权限
  3. 可结合各种shell控制语句以完成更复杂的操作

shell脚本的构成

  1. 脚本申明(解释器):若第一行为“#!/bin/bash”,表示此行以下代码语句是通过/bin/bash程序来解释执行#!/bin/bash认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。(Python代码:必须申明解释器**#!/usr/bin/pyhton** 或 #!python 执行文件的其他路径
  2. 注释信息:以“#”开头的语句表示为注释信息被注释的语句在运行脚本时不会被执行
  3. 可执行语句:比如echo命令,用于输出 " " 之间的字符串

创建shell脚本

  1. 进入shell脚本编辑

    在这里插入图片描述


    在这里插入图片描述

  2. 执行shell脚本

在这里插入图片描述

运行shell脚本

  1. 进入shell脚本编辑
    [root@localhost ~/ysj]# vim dem01.sh

    在这里插入图片描述

会在脚本的子shell环境中执行脚本中的代码
使用绝对路径或者相对路径指定脚本的路径运行,要求脚本文件必须要有执行权限 x

在这里插入图片描述

  指定shell程序来直接解释运行脚本
  **bash   脚本文件**
  **sh**

在这里插入图片描述


会在当前的shell环境中执行脚本里的代码操作,也就是脚本文件中的代码或者命令会影响当前shell环境
source 脚本文件
.

在这里插入图片描述

管道操作

将管道符号 “ | ” 左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。

重定向操作:

类型 操作符 用途
重定向输入 < 从指定的文件读取数据
重定向输出 > 将标准输出结果保存到指定的文件,(并且覆盖原内容
>> 将标准输出结果追加到指定的文件的尾部,(不覆盖原有内容
标准错误输出 2> 错误信息保存到指定的文件,(并且覆盖原有内容
2>> 错误信息追加到指定文件文件的尾部,(不覆盖原有内容
混合输出 &> 将标准输出、标准错误保存到同一文件
2>&1 将标准错误输出重定向到标准输出

重定向输出“>”和“>>”

在这里插入图片描述

重定向错误输出“2>”

在这里插入图片描述


** 混合输出“&>”和“2>&1”**

在这里插入图片描述

2>&1 错误输出重定向到标准输出中,而标准输出重定向文件123.txt中,因此错误输出重定向文件123.txt中

交互硬件设备

类型 设备文件 文件描述编号 认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示
标准错误 /dev/stderr 2 显示

shell变量的作用、类型

变量的作用

用来存放系统和用户需要使用的特定参数(值)

  • 变量名:使用固定的名称,由系统预设或用户定义
  • 变量值:能够根据用户设置、系统环境的变化而变化

变量的类型

在这里插入图片描述

自定义变量

  • 定义一个新变量:变量名以字母或下划线开头,区分大小写,建议全大写
  1. 变量名=变量值 (注意:shell脚本的变量名必须是以字母或者_开头

    在这里插入图片描述

  • 查看变量 的值
    echo $变量名

    在这里插入图片描述


    注意:变量名的值为最后一次的值

    在这里插入图片描述

[root@localhost ~/ysj]# name=“zhang san”

在这里插入图片描述


在这里插入图片描述

  1. read命令获取输入内容方法
  • 方法一:read -p “请输入一个变量的值:” name"

在这里插入图片描述

  • 方法二:
    [root@localhost yy]# vim demo1.sh

    在这里插入图片描述


    在这里插入图片描述

变量作用范围

认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量。当进入子程序或新的子shell环境时,局部变量将无法在使用。
可以通过内部命令export将指定的变量导出为全局变量在所有的子shell环境中能够继续使用。
格式1:export 变量名
格式2:export 变量名=变量值

整数变量的运算

格式:expr 变量1 运算符 变量2 【运算符 变量3】
运算符:

+ 加法
- 减法
* 乘法
/ 除法
% 取余

常用的运算表达式:

  • i=$(expr 12 * 5)
  • i=$((12 * 5))
  • i=$[12 * 5]
  • let i =12*5
  • i++ 相当于 i=$[ $i+1 ]
  • i-- 相当于 i=$[ $i-1 ]
  • i+=2 相当于 i=$[ $i +2 ]
  • 浮点运算:echo “浮点运算表达式” | bc
  • awk ‘BEGIN {print 浮点运算表达式}’

环境变量

环境变量由系统提前创建,用来设置用户的工作环境

  • env:查看到当前工作环境下的环境变量
  • USER:表示用户名称,
  • HOME:表示用户的宿主目录
  • LANG:表示语言和字符集
  • PWD:表示当前所在的工作目录
  • PATH:表示可执行程序的搜索路径

在这里插入图片描述

环境变量的全局配置文件为**/etc/profile**,在此文件中定义的变量作用于所有用户
每个用户还有自己的独立配置文件~/.bash_profile)。

在这里插入图片描述

位置变量

位置变量并不是用户自定义的,而在shell中可以直接使用,这样一些约定俗成的规则就可以了。

  • 定义:当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述

$n:n为数字, $0代表命令本身, $1~ $9代表一个到九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}

:


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

预定义变量

$0 脚本本身
$# 脚本后面跟的参数个数
$* 、 $@ 脚本后面跟的所有参数
“$*” 会把脚本后面跟的所有参数当作一个整体看待
“$@” 会把脚本后面跟的所有参数看作多个以空格分隔的个体
$? 返回上一条Linux命令或者脚本执行的结果,0为执行正常,非0值为执行异常

在这里插入图片描述


date :
date +“%Y%m%d”

  • %Y 年份
  • %m month
  • %d 按月计的日期

date +“%F”

  • %F 完整日期格式,等价于 %Y-%m-%d

在这里插入图片描述


在这里插入图片描述


[root@localhost ~/yy]# date -d “-1 day” + “%Y%m%d”(前一天)
[root@localhost ~/yy]# date -d “-1 month” + “%Y%m%d”(前一月)

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...