DAY 27 shell编程规范与变量

Shell是Linux系统中的命令解释器,如bash、csh等,它接收用户指令并执行。bash是常用的Shell,具备快捷键、历史命令查看、别名等功能。文章介绍了Shell脚本的基本结构、执行逻辑,以及重定向、管道符的使用。此外,还讨论了Shell变量,包括自定义变量和预定义变量,如环境变量、位置参数等。
摘要由CSDN通过智能技术生成

shell脚本概述

shell的作用

Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。 常见的 Shell 解释器程序有很多种,使用不同的 Shell 时,其内部指令、命令行提示符 等方面会存在一些区别。

通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类

linux 中常见的shell

  • bash:基于GUN的框架下发展的shell

  • csh:类似C语言的shell

  • tcsh:整合了csh 提供了更多功能

  • sh:已经被bash替换

  • nologin:使用户无法登陆

  • bash(/bin/bash)是目前大多数 Linux 版本采用的默认 shell。

bash特性:

  1. 支持快捷键:比如 ctrl+c 强制终止进程 、 ctrl+l 清屏 、Tab补齐 等等。

  1. 支持查看历史命令(history)

  1. 支持别名(alias)

  1. 标准输入和标准输出的重定向

  1. 管道符

  1. 文件名通配机制

  1. 支持命令hash

  1. 支持变量

Shell脚本应用场景

重复性操作

交互性任务

批量事务处理

服务运行状态监控

定时任务执行

Shell脚本概念及构成

第一行:脚本申明,调用使用的语言,默认以/bin/bash执行

第二行:注释信息: 以#开头的语句表示注释信息,被注释的语句在运行脚本中不会被执行

第三行:可执行代码内容

脚本执行逻辑及执行方式

脚本执行逻辑

顺序执行:程序按从上到下顺序执行

选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

循环执行:程序执行过程中需要重复执行多次某段语句

执行脚本时的shell环境

source和 . 执行脚本时,会在当前shell环境中执行脚本。

bash、绝对路径、相对路径 执行脚本时,会创建一个子shell环境,并在这个子shell环境中执行脚本。

不建议使用source来执行脚本,可能会影响一些资源配置。

脚本中的空白行会被解释器忽略。

脚本中,除了shebang,余下所有以#开头的行,都回被视作注释行而被忽略。此即为注释行。

重定向与管道符

标准输入与标准输出

交互式硬件设备:

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

类型

设备文件

文件描述编号

默认设备

标准输入

/dev/stdin

0

键盘

标准输出

/dev/stdout

1

显示器

标准错误输出

/dev/stderr

2

显示器

重定向操作

类型 操作符 用途

重定向输入 < 从指定的文件读取数据,而不是从键盘输入

重定向输出 > 将输出结果保存到指定的文件(覆盖原有内容)

重定向输出 >> 将输出结果换行添加在文件尾部

重定向错误输出 2> 将错误信息保存到指定的文件(覆盖原有内容)

重定向错误输出 2>> 将错误信息追加到指定的文件中

混合输出 &> 将标准输出、标准错误的内容保存到同一个文件中

管道符

管道符的作用是连接两个命令,将第一个命令的标准输出作为第二个命令的标准输入。 同一行命令中可以使用多个管道符xx| 管道符右边的命令如果需要执行对象,则需要在命令前添加xargs。

shell脚本变量简介

变量是计算机语言中能储存计算结果或能表示值的抽象概念。保存将来会变化的数据,即使数据变化,直接调用变量即可。

Shell 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使用变量,Shell 程序能够提供更加灵活的功能,适应性更强。

变量的作用:

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

  • 变量名:使用固定的名称,由系统预设或用户定义。

  • 变量值:能够根据用户设置、系统环境的变化而变化。

定义变量: 变量名=变量值

我们也可以使用 read 变量名

引用变量: ¥变量名或 ${变量名}

查看变量:

  • echo $变量名:查看单个变量

  • set:查看所有变量,包括局部变量和环境变量

取消变量: unset 变量名

变量的类型

自定义变量:由用户自己定义、修改和使用

特殊变量:环境变量,只读变量,位置变量,预定义变量

环境变量:由系统维护,用于设置工作环境

只读变量:只可以读取不可以更改

位置变量:通过命令行给脚本传递参数

预定义变量:Bash中内置的一类变量,不能修改 有些规定好的变量 放在那里让你使用

自定义变量

要求:

  1. 区分大小写

  1. 不能使程序中的保留字和内置变量:如:if, for,hostname 命令 a=

  1. 只能使用数字、字母及下划线,且不能以数字开头

  1. 不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

  1. 大驼峰 StudentFirstName

  1. 小驼峰 studentFirstName

  1. 下划线 student_name

定义与查看变量

定义变量

变量名以字母或下划线开头,区分大小写,建议全大写

变量名=变量值

查看变量值

echo $变量名

预定义变量

预定义变量是系统定义好的变量,用来保持脚本程序的执行信息。

可以直接使用这些变量,不能直接为这些变量赋值。变量

作用

$?

表示前一条命令执行后的返回状态。返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常。

$*

表示所有位置参数的内容。当整体返回。(将输入的参数作为一个单词)

$@

表示所有位置参数的内容。当个体返回。可作为数组。(将参数内容分割成n份,每份作为独立个体)

$#

表示命令行中位置参数的总个数。

$0

表示当前脚本名称(如果是软链接,显示当前软链接文件名)。

$_

表示在此之前执行的命令或脚本的最后一个参数。

$$

获取当前进程的PID。

$*$@的区别:

不加双引号的话,$*$@ 都代表脚本后面跟的所有参数。

加上双引号的话,"$*"会把所有参数当作一个整体去看待(此时参数数量为1),"$@"会把脚本后面跟的每一个参数当作一个个体去看待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值