首页 > 系统相关 >01-Shell 编程规范与变量

01-Shell 编程规范与变量

时间:2024-05-25 11:57:25浏览次数:25  
标签:脚本 文件 Shell 变量 编程 命令 01 重定向

Shell 脚本概述:在一些复杂的 Linux 维护工作中,大量重复性的输入和交互操作不仅费时费力,而且容 易出错,而编写一个恰到好处的 Shell 脚本程序,可以批量处理、自动化地完成一系列维护 任务,大大减轻管理员的负担

Shell 的作用

它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的操作传递给内核执行,并输出执行结果

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

三条命令:cd /boot/、pwd、ls -lh vml*。执行此脚本文 件后,输出结果与依次单独执行这三条命令是相同的,从而实现了“批量处理”的自动化过程.

直接通过“./first.sh”的方式执行脚本,要求文件本身具有 x 权限,在某些安全系统中可 能无法满足此条件。鉴于此,Linux 操作系统还提供了执行 Shell 脚本的其他方式——指定 某个 Shell 来解释脚本语句,或者通过内部命令 source(或点号“.”)来加载文件中的源代码 执行。例如,使用“sh first.sh”或“. first.sh”也可以执行 first.sh 脚本中的语

Linux 系统中包括大量的 Shell 脚本文件,在学习 Shell 脚本的过程中可用来作为参考, 但应尽量避免直接修改系统内的 Shell 脚本文件,以免导致服务或系统故障

重定向与管道操作

1.重定向操作

1.标准输入(STDIN):默认的设备是键盘,文件编号为 0,命令将从标准输入文件 中读取在执行过程中需要的输入数据

2.标准输出(STDOUT):默认的设备是显示器,文件编号为 1,命令将执行后的输 出结果发送到标准输出文件

3.标准错误(STDERR):默认的设备是显示器,文件编号为 2,命令将执行期间的 各种错误信息发送到标准错误文件。

(1)重定向输出:

重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示 器的屏幕上。重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件。

重定向输入:

重定向输入指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待 从键盘输入。重定向输入使用“<”操作符。

(3)错误重定向

错误重定向指的是将执行命令过程中出现的错误信息(如选项或参数错误等)保存到指 定的文件,而不是直接显示在屏幕上。错误重定向使用“2>”操作符,其中“2”是指错误文件的 编号(在使用标准输出、标准输入重定向时,实际上省略了 1、0 编号)。

2.管道操作

管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的 命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。 在 Shell 脚本应用中,管道操作通常用来过滤所需要的关键信息。例如,使用 grep 命 令查询使用/bin/bash 作为 Shell 的系统用户名时,会输出符合条件的整行内容,在此基础上 可以结合管道操作与 awk 命令做进一步过滤,只输出用户名和登录 Shell 列

Shell 变量的作用、类型

各种 Shell 环境中都使用到了“变量”的概念。Shell 变量用来存放系统和用户需要使用的 特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使 用变量,Shell 程序能够提供更加灵活的功能,适应性更强。 常见 Shell 变量的类型包括自定义变量、环境变量、只读变量、位置变量、预定义变量。 本节将分别介绍这四种 Shell 变量的使用

自定义变量

自定义变量是由系统用户自己定义的变量,只在用户自己的 Shell 环境中有效,因此又 称为本地变量

定义新的变量:定义变量的基本格式为“变量名=变量值”,等号两边没有空格。变量名称需以字母或下 划线开头,名称中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)

2.查看和引用变量的值

通过在变量名称前添加前导符号“$”,可以引用一个变量的值。使用 echo 命令可以查看 变量,可以在一条 echo 命令中同时查看多个变量值。

当变量名称容易和紧跟其后的其他字符相混淆时,需要添加大括号“{}”将其括起来,否 则将无法确定正确的变量名称。对于未定义的变量,将显示为空值

3.变量赋值的特殊操作

(1)双引号(”)

(2)单引号(‘)

(3)反撇号(`)

(4)read 命令

4.设置变量的作用范围

默认情况下,新定义的变量只在当前的 Shell 环境中有效,因此称为局部变量。当进入 第 13 页 共 19 页 子程序或新的子 Shell 环境时,局部变量将无法再使用。例如,直接执行 Bash 进入一个新 的子 Shell 脚本后,将无法引用父级 Shell 环境中定义的 Product、Version 等变量

5.数值变量的运算

Shell 变量的数值运算多用于脚本程序的过程控制(如循环次数、使用量比较等,后续 章节会介绍)。在 Bash Shell 环境中,只能进行简单的整数运算,不支持小数运算。整数 值的运算主要通过内部命令 expr 进行(必须有一个空格)

特殊的 Shell

1.环境变量

环境变量指的是出于运行需要而由 Linux 系统提前创建的一类变量,主要用于设置用户 的工作环境,包括用户宿主目录、命令查找路径、用户当前目录、登录终端等。环境变量的 值由 Linux 系统自动维护,会随着用户状态的改变而改变

在 Linux 系统中,环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用 于所有用户。除此之外,每个用户还有自己的独立配置文件(~/.bash_profile)。若要长期 变更或设置某个环境变量,应在上述文件中进行设置。例如,执行以下操作可以将记录的历 史命令条数改为 200 条(默认为 1000 条),只针对 root

只读变量:Shell 变量中有一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变 量。

3.位置变量:为了在使用 Shell 脚本程序时,方便通过命令行,为程序提供操作参数,Bash 引入了 位置变量的概念

预定义变量:预定义变量是由 Bash 程序预先定义好的一类特殊变量,用户只能使用预定义变量,而 不能创建新的预定义变量,也不能直接为预定义变量赋值

1.$#:表示命令行中位置参数的个数

2.$*:表示所有位置参数的内容

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

4.$0:表示当前执行的脚本或程序的名称

标签:脚本,文件,Shell,变量,编程,命令,01,重定向
From: https://blog.csdn.net/L17335916197/article/details/139195131

相关文章

  • Shell编程规范与变量
    一:第一个shell脚本1:shell的作用[root@localhost~]#cat/etc/shells2:编写第一个shell脚本[root@localhost~]# vifirst.shcd/boot/pwdls-lhvml*[root@localhost~]#chmod+xfirst.sh[root@localhost~]#./first.sh[root@localhost~]#vifirst.s......
  • 实验 2 Scala 编程初级实践
    一实验目的二实验平台三实验内容和要求1、计算级数   2、模拟图形绘制traitDrawable{defdraw():Unit=println(this.toString)}caseclassPoint(varx:Double,vary:Double)extendsDrawable{defshift(X:Double,Y:Double):Unit={x+=X......
  • JavaScript入门指南:从零开始你的编程之旅
        JavaScript是现代web开发不可或缺的一部分,作为一种强大且灵活的编程语言,它可以在浏览器中运行,为网页添加互动功能。无论你是完全的初学者,还是有其他编程语言的基础,本文将引导你从零开始学习JavaScript。我们将涵盖基础知识、关键概念和实践技巧,帮助你迅速上手并......
  • 【pyspark速成专家】5_Spark之RDD编程3
    目录​编辑六,共享变量七,分区操作六,共享变量当spark集群在许多节点上运行一个函数时,默认情况下会把这个函数涉及到的对象在每个节点生成一个副本。但是,有时候需要在不同节点或者节点和Driver之间共享变量。Spark提供两种类型的共享变量,广播变量和累加器。广播变量是......
  • 01、Cubemx新建工程与LED点亮和蜂鸣器实现(基于正点原子ZET6)
    一、使用Cubemx新建工程    1、正确选择芯片2、正确选择SYS与RCC3、正确配置时钟树输入数字直接回车,然后一直OKK,让它自己配4、正确建立工程结构与工程打开5、Keil5的配置注意看下方Keil5的配置很重要,不配置不能在keil5中开发(本历程主要是完成最简单的几......
  • Python异步编程之基础概念
    Python异步编程之基础概念在现代编程中,异步编程是一种重要的技术,尤其是在处理I/O密集型任务时,异步编程可以大大提高程序的性能和响应速度。本文将介绍Python异步编程的基础概念,帮助你理解其原理和应用。什么是异步编程?异步编程是一种并发编程模型,它允许程序在等待某些任......
  • 深入解析Python并发的多线程和异步编程
    在Python编程中,多线程是一种常用的并发编程方式,它可以有效地提高程序的执行效率,特别是在处理I/O密集型任务时。Python提供了threading模块,使得多线程编程变得相对简单。本文将深入探讨threading模块的基础知识,并通过实例演示多线程的应用。1.多线程基础概念在开始之前,让我们......
  • python核心编程
    python核心编程一、python函数1.1函数的概念1.2函数的基本使用1.3函数的参数1.3.1单个参数1.3.2多个参数1.3.3不定长参数1.3.4缺省参数1.3.5参数注意1.4函数的返回值1.5函数的使用描述1.6函数的作用域1.7相关函数1.7.1偏函数1.7.2高阶函数1.7.3返回函数1......
  • 【实战JVM】-01-JVM通识-字节码详解-类的声明周期-加载器
    【实战JVM】-01-JVM通识-字节码详解-类的声明周期-加载器1初识JVM1.1什么是JVM1.2JVM的功能1.2.1即时编译1.3常见JVM2字节码文件详解2.1Java虚拟机的组成2.2字节码文件的组成2.2.1正确打开字节码文件2.2.2字节码组成2.2.3基础信息2.2.3.1魔数2.2.3.1主副......
  • Shell编程完成用户注册登录
    目录需求1.menu界面welcome(1)注册用户(2)用户登录(3)退出2.注册用户(1)用户名(首字母大写)(2)密码(8位及其以上必须有三个字符其中一个以上如:&$_隐试密码)(3)手机号码(必须以139开头)(4)邮箱邮箱名数字开头@qq.com(5)检测是否重名,重手机号和邮箱(6)不重名、手机号、邮箱写入......