当前位置: 首页 > ai >正文

Linux | Shell脚本的基础知识

一. 定义

1.1 什么是shell脚本

  • shell脚本是一种可运行文本
  • shell脚本的内容是由逻辑和数据组成
  • shell脚本是解释型语言
    • 命令不可单独执行,由解释器将代码转换为系统指令,系统接受指令后执行
    • 速度比编译型语言慢,优点是简单,开发效率高

1.2 shell脚本存在的意义

  • Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具
  • 一次编编写永久受益,多台主机都可以使用同一个脚本

二. shell脚本的基本元素及作用

  • 脚本幻数:即脚本解释器,脚本运行的最优先指令,负责对脚本中其他命令进行解释
    • 在脚本文件首行出现的特殊字符序列。主要作用是告知系统该脚本需要使用哪种解释器来运行。
  • 程序主题:程序主体通常由命令,执行逻辑控制器和数据组成 
  • 注释:脚本中的说明文字,不参与脚本执行,只是对脚本中的代码进行说明

三. 脚本的书写规范及注释书写技巧

3.1 shell脚本的注释方法

  • 单行注释 #
#print date   单行注释
date          程序主题
  • 多行注释 
: "
1.print date               多行注释(:与"之间有个空格)
2.
2.
"
date                       程序主题

3.2 shell脚本的书写规范

  • 脚本文件名:应见名知意
    • 如" nginx_installtion.sh ",这是一个安装nginx的脚本
  • 脚本解释器:文件开头指定脚本解释器 #!/bin/sh #!/bin/bash
  • 注释:单行注释或多行注释,注释不要用中文,避免后期中文乱码
  • 尽量用少的命令完成动作,多使用内部命令
    • 如:echo、eval、exec、export、read、shift、exit
  • 开头添加信息

    3.3 vim用于书写脚本的设定

    • 配置 ~/.vimrc 文件
      • /.vimrc 是 Vim 编辑器的用户配置文件,用于存储用户自定义的编辑习惯和功能设置
      • 生效对象:仅对当前用户生效,每次打开 Vim 时会自动加载该文件中的配置

    • 功能:在新建脚本文件时,在头部插入标准化注释模板

      四. shell脚本执行方法详解

      4.1 无可执行权限

      • 当脚本没有可执行权限时,是不能用脚本的绝对路径去调用他的

      • 相对路径也不行

      • 调用的三种方法

      ##1 source xx.sh
      [root@huang4 script]# source hh.sh
      Tue May 27 05:45:00 PM CST 2025##2 . xx.sh
      [root@huang4 script]# . hh.sh
      Tue May 27 05:45:25 PM CST 2025##3 sh xx.sh
      [root@huang4 script]# sh hh.sh
      Tue May 27 05:45:33 PM CST 2025
      

         4.2 有可执行权限

        ## 添加权限
        [root@huang4 script]# chmod +x hh.sh
        

        4.3 区别

        • “ source hh.sh ”与“ . hh.sh ”:以当前的shell作为解释器,不会开启新的shell

        • “ sh hh.sh ”:用指定的解释器

        • “ ./hh.sh ”:在脚本文件中查看使用哪一种解释器,先开发后运行

        五. shell脚本的调试

        • 显示执行过程

        ## 调试脚本   sh -x name.sh
        ## +表示动作  没有+表示输出[root@huang4 script]# sh -x hh.sh
        + date
        Thu May 29 10:56:20 PM CST 2025
        
        • 直接执行脚本 

        [root@huang4 script]# sh hh.sh
        Thu May 29 10:58:36 PM CST 2025

        六. 脚本退出值

        6.1 什么是退出值

        • 执行一条命令完毕后,系统会给出一个退出值,若成功则为0,出现错误则1~255

        • 退出状态码是一个整数,其有效范围为0~255

        • 行为良好的UNIX命令,程序和工具都会返回0作为退出码来表示成功。

        6.2 查看退出值

        • 完成一条命令后,输入 echo $?  查看退出值

        6.3 修改退出值

        • 未指定退出值(exit 后没有加数值)

        • 指定退出值(exit 数值)

        http://www.xdnf.cn/news/9705.html

        相关文章:

      • 基于ubuntu安装hadoop
      • .NET8入门:14.ASP.NET Core MVC进阶——Model
      • 前端高频面试题1:HTML/CSS/浏览器/计算机网络
      • 安装 Node.js 和配置 cnpm 镜像源
      • Java异常处理的全面指南
      • 基于通义千问的儿童陪伴学习和成长的智能应用架构。
      • Spring AI 之对话记忆(Chat Memory)
      • [网页五子棋][匹配模块]处理开始匹配/停止匹配请求(匹配算法,匹配器的实现)
      • python h5py 读取mat文件的<HDF5 object reference> 问题
      • StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
      • 【大模型】Bert变种
      • Kubernetes资源申请沾满但是实际的资源占用并不多,是怎么回事?
      • 微深节能 码头装卸船机定位与控制系统 格雷母线
      • WPF 按钮悬停动画效果实现
      • 【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN
      • 《AI大模型的开源与性能优化:DeepSeek R1的启示》
      • 互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
      • 深入理解C#中的LINQ:数据查询的终极利器
      • 2013-2021年各省电子商务数据
      • 认识多系统萎缩:一种隐匿进展的神经退行性问题
      • spring IOC控制反转
      • 【春秋云镜】CVE-2022-26965 靶场writeup
      • 第一章 项目总览
      • 线性代数入门:轻松理解二阶与三阶行列式的定义与理解
      • Java消息队列与安全实战:谢飞机的烧饼摊故事
      • AI编程报错 API流式传输失败解决方案
      • 如何做好一个决策:基于 Excel的决策树+敏感性分析应用
      • 在ROS2(humble)+Gazebo+rqt下,实时显示仿真无人机的相机图像
      • WPF的UI交互基石:数据绑定基础
      • UDP编程