首页 > 系统相关 >Shell 语言教程 (入门)

Shell 语言教程 (入门)

时间:2024-10-31 21:19:21浏览次数:3  
标签:脚本 教程 shell 入门 sh Shell 执行 变量

Shell 介绍

Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理 Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。 shell编程通常指的是学习shell命令语法后,利用这套语法开发脚本程序,操作、访问内核服务。 而不是使用C语言去编写一个shell程序。

Shell 开发步骤 

 能进行文本编辑的地方都可以写 ,linux上常使用vim编辑器开发。Shell语言不需要编译,但是执行Shell语言需要Shell语法解释器,Linux系统中集成了很多种类的Shell解释器,所以不需要安装Shell解释器。

Shell 解释器

常见的Shell解释器:

sh:全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

csh: 全称是C shell,它是sh之后另一个广为流传的shell是由柏克莱大学的Bill Joy设计的,这个shell的语法有点类似C语言,所以才得名为C shell ,简称为csh。

Bash:全称是bash shell,它是Linux的默认shell。由GNU组织开发,是各种Linux发行版默认配置的 shell。bash兼容sh,针对sh编写的Shell代码可以不加修改地在bash中运行。

Shell 变量

 shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串。

shell中有3种变量:用户变量、环境变量、特殊变量

用户变量在编程过程中使用量最多

环境变量主要是在程序运行时需要设置

特殊变量在对参数判断和命令返回值判断时会使用

变量的定义语法:

变量名=变量值

变量的定义需遵循的规则

  1. 变量名可以由字母、数字和下画线组成,但是不能以数字开头,不能使用关键字
  2. 在 Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须使用特殊命令
  3. 变量用等号"="连接值,"="左右两侧不能有空格。
  4. 变量值建议用中如果有空格,则需要使用单引号或双引号包含,如 test="hello world!"
  5. 在变量值中,可以使用转义符"\"。
用户变量

 环境变量

环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。

当shell程序启动时,都自动设置一组变量,这组变量就是环境变量。shell中的所有命令都可以使用这些变量,环境变量可以在/etc/profile中设置,环境变量的名字习惯上使用大写字母

在Linux中执行:env命令即可查看当前系统中记录的环境变量,环境变量是一种Key=Value型结构,即名称和值。

Linux环境变量可以用户自行设置, 语法:

export 变量名=变量值 

临时设置

 永久有效设置

针对当前用户生效,配置在当前用户的:    ~/.bashrc文件中。

针对所有用户生效,配置在系统的:    /etc/profile文件中 ,

并通过语法:source 配置文件,进行立刻生效,或重新登录生效

特殊变量

我们可以在执行 Shell 脚本时,向脚本传递参数,这时候可以使用特殊变量来获取参数。

在执行Shell程序脚本时,可以向shell脚本动态传递参数。

好处是某些配置属性不用写死在脚本中。

动态传递参数的方式:

sh shell脚本文件 参数1  参数2 ...

Shell常用的特殊变量在shell脚本内部支持接收参数并使用:

 Shell 字符串

一般来说,在编程语言中,字符串是使用最多的数据类型,shell也不例外;

shell中字符串定义可以使用单引号、可以使用双引号、也可以不使用引号;

推荐使用双引号定义字符串,方便在字符串中实现变量的提取操作。      

双引号括起来的内容有"$"等都拥有特殊含义  

单引号括起来的内容都是普通字符

Shell `反引号的使用 

Shell 命令执行脚本

 命令、脚本本质上都是属于shell;

shell命令倾向于在linux命令行中使用,适合逻辑简单场景;

shell脚本倾向于在文件中编写,适合复杂逻辑处理。

shell脚本文件一般以.sh结尾(只要内容是shell命令,后缀可以没有)

文件第一行一般为#!/bin/bash(也可以不写,默认解释器)

Shell 脚本执行方式

方式一:sh执行            

格式: sh 脚本

注意: 需要进入脚本的所在工作目录,然后使用对应的sh命令来执行脚本,

这种执行方式,脚本文件不需要具有可执行权限。

方式二:相对路径执行        

格式: ./脚本

注意: 需要先进入到脚本所在的目录,然后使用 ./脚本方式执行,

这种执行方式,必须保证脚本文件具有可执行权限。

方式三:绝对路径执行   

格式: /绝对路径/脚本

注意: 需要使用脚本的绝对路径中执行,指的是直接从根目录/到脚本目录的绝对路径,

这种执行方式,必须保证脚本文件具有可执行权限。

案例一

 创建一个binzi1.sh脚本文件,要求此脚本内先定义一个字符串变量str并赋值binzi666,然后打印该字符串 最后保存并执行此脚本

注意:

  1. shell脚本后缀名没有要求,通常以.sh结尾
  2. 在shell中除了第一行的#表示特殊格式外, 其他地方的#符号一般表示注释。
  3. #! 是一个约定的标记,它告诉系统 这个脚本需要什么解释器来执行
  4. 相对路径方式如果不加./直接执行脚本 默认去系统环境变量中查找
案例二
  1. 编写一个脚本文件binzi2.sh,在里面使用 之前学习的特殊变量分别获取当前脚本文件名称,传入参数个数并分别获取对应参数内容
  2. 执行binzi2.sh脚本文件,传入3个参数 分别为:张三,18,男
  3. 使用sh命令方式执行binzi2.sh脚本文件

标签:脚本,教程,shell,入门,sh,Shell,执行,变量
From: https://blog.csdn.net/CG_MPX/article/details/143416813

相关文章

  • xshell终端识别http ftp 链接 ctrl点击打开链接
    前言全局说明xshell终端识别httpftp链接ctrl点击打开链接一、说明终端链接可以直接点击,比复制一下方便很多二、开启,中断连接识别2.1点工具--选项2.2点键盘鼠标--鼠标按图片勾选免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。......
  • 关于pinia持久化问题失败这件事(另附官方持久化教程)
    唉,持久化大坑,怎么搞网上大多数的解释是这里的pinia定义了两次的问题,但是真的是这样吗好多人发现,我没定义两次也会啊,这是为啥以此为例,发现华点没有,你想存的信息直接返回的时候返回掉就行,如果不是直接返回掉而是用get方法包装的话就会失效总之,想存的数据必须直接返......
  • 【java】什么是 Future 和 CompletableFuture - 一篇文章快速入门 Java 异步编程
    1.引言在现代Java编程中,异步编程变得越来越重要。随着多核处理器的普及,充分利用多线程可以大大提高程序性能和用户体验。在这种情况下,Future和CompletableFuture成为处理异步任务的核心工具。2.Future是什么?Future的定义及基本概念Future是Java并发库中的接口......
  • Java基础篇 (一)(JDK安装教程 零基础谁都可以学会!!!)
    前言大家好,我是小斜。俗话说的好,十年树木,百年树人。欲成大事,必须要坚持不懈努力。学习编程也一样,只有通过日积月累地学习才能有质的飞跃!我在这里给刚入门的大伙们提几点小建议:1.知行合一,编程归根结底就是要我们把思考出来的东西,再让它通过代码实现的一个过程。如果仅仅停留......
  • (教程)如何用 Java 读取和写入图像
    在这篇文章中,我将向您展示如何用Java读取和写入图像文件。我将演示两种不同的方法。第一种是使用 ImageIO,第二种是使用我们的 JDeli图像库。如果您只是在寻找图像查看器,JDeli包含一个内置图像查看器。 如何在Java中读取和写入图像Java为图像提供了一种称为Buffe......
  • 使用MicroPython开发ESP32系列单片机程序入门
    请参考网络ESP32教程地址:https://www.itprojects.cn/coursecenter-hardware.html以ESP32-S3为例讲述烧录固件过程1、下载Micropython固件。首次使用ESP32时,需要将micropython固件烧录到ESP32内。不同芯片,Micropython固件不同。固件下载地址 为:https://micropython.org/dow......
  • stm32入门教程--USART外设 超详细!!!
    目录简介什么是UART?什么是USART?简介USART(UniversalSynchron/AsynchronousReceiver/Transmitter)通用同步/异步收发器 1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚的数据帧时许,拼接......
  • VSCode编辑器极简使用入门
    VSCode(VisualStudioCode)是一款开源、跨平台、轻量级的代码编辑器,具有非常丰富的插件生态。他本身就是JavaScript + Electron (/ɪˈlektrɒn/电子)代码开发的。官方下载地址:https://code.visualstudio.com/,支持绿色无安装。01、常用快捷键工具快捷键描述Ctrl+Shi......
  • 深入理解Docker,从入门到精通-Part3(高级进阶)
    一、仓库管理docker的仓库,存的就是镜像,所以仓库管理就是对镜像进行管理。在Docker里面一般有两类仓库:公共仓库(DockerHub官方仓库)和私人仓库(Registry和harbor)下面分别对这三种仓库进行介绍1、DockerHub仓库管理DockerHub是Docker公司维护的公共Registry,用户可以将......
  • JavaScript基础教程前言
     ---------------------------------------------------------------------有人22岁就毕业了,但等了五年才找到好的工作;有人25岁就当上CEO,却在50岁去世;也有人迟到50岁才当上CEO,然后活到90岁。 有人依然单身,同时也有人已婚。奥巴马55岁就退休,川普70岁才开始当总统。......