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

Linux教程-Shell编程系列一

文章目录

      • 1. Shell的本质
      • 2. Shell脚本的特点
      • 3. 典型应用场景
      • 4. 学习优势
      • 一、位置参数(Positional Parameters)
      • 二、Shell变量
        • 1. 变量定义与引用
        • 2. 特殊变量
        • 3. 变量作用域
        • 4. 变量高级用法
      • 三、位置参数与变量的实际应用
      • 总结

Shell编程是操作系统(如Linux/Unix)的核心交互工具,它既是命令解释器,又是功能强大的脚本语言。以下是其核心要点:

1. Shell的本质

  • 桥梁作用:Shell是用户与操作系统内核之间的接口,负责解析用户输入的命令并调用系统功能执行。
  • 双重身份:既是交互式命令行工具(如输入ls查看文件),也是脚本语言(编写.sh文件自动化任务)。

2. Shell脚本的特点

  • 高效自动化:通过文本文件组合命令,实现批量操作(如备份、日志分析),显著提升系统管理效率。
  • 无需编译:脚本直接解释执行,开发周期短,适合快速实现功能。
  • 跨命令集成:可调用系统工具(如grepawk)和编程结构(循环、条件判断),处理复杂任务。

3. 典型应用场景

  • 系统管理:自动化安装软件、监控资源、管理用户权限。
  • 数据处理:文本过滤、日志分析、报表生成。
  • 定时任务:通过cron调度脚本定期执行(如每日备份)。

4. 学习优势

  • 入门简单:语法接近自然语言,适合初学者快速上手。
  • 生态丰富:支持多种Shell类型(如Bash、Zsh),兼容性强。

示例脚本

#!/bin/bash
echo "Hello, Shell!"  # 输出文本
for file in *.txt; doecho "处理文件: $file"  # 批量处理
done

Shell编程将重复劳动转化为自动化流程,是运维、开发及数据分析的必备技能。

在Shell编程中,位置参数和变量是脚本处理输入和控制逻辑的核心机制。接下来会逐步讲解Shell编程,请继续阅读,越多过程中如果说有什么疑问,请告知!!!🍉🍉🍉


一、位置参数(Positional Parameters)

位置参数是脚本运行时通过命令行传递的参数,通过$1$2$9等变量引用(超过9个需用${10}等形式):

  • $0:脚本名称或路径。
  • $1~$9:第1到第9个参数。例如:
    # 脚本内容:echo "第一个参数: $1"
    ./script.sh hello  # 输出"第一个参数: hello"
    
  • $#:参数个数。
  • $*$@:所有参数。区别在于:
    • $*将所有参数合并为单个字符串(如"$1 $2...")。
    • $@保留每个参数的独立性(如"$1" "$2"),适合循环遍历。
  • ${!#}:最后一个参数(需用花括号)。

动态修改位置参数

  • 使用set命令重置参数:
    set -- new1 new2  # 将$1设为new1,$2设为new2
    
  • 使用shift左移参数(如shift 2跳过前两个参数)。

二、Shell变量

1. 变量定义与引用
  • 无类型:变量无需声明,直接赋值(等号两侧不能有空格):
    name="Alice"  # 定义变量
    echo $name    # 引用变量
    
  • 引号规则
    • 双引号":允许变量扩展(如"$name"输出Alice)。
    • 单引号':禁止扩展(如'$name'输出$name)。
2. 特殊变量
  • $?:上一个命令的退出状态(0表示成功)。
  • $$:当前脚本的进程ID。
  • $!:最后一个后台进程的PID。
3. 变量作用域
  • 局部变量:默认仅在当前Shell或脚本中有效。
  • 环境变量:通过export导出,子进程可继承:
    export PATH="$PATH:/new_path"
    
  • 只读变量:用readonly声明后不可修改:
    readonly PI=3.14
    
4. 变量高级用法
  • 参数置换:根据条件赋值:
    ${var:-default}  # 若var未定义,返回default
    ${var:+value}    # 若var已定义,返回value
    
  • 命令结果赋值
    files=$(ls)      # 推荐使用$()
    files=`ls`       # 旧式语法(不推荐)
    

三、位置参数与变量的实际应用

  1. 脚本示例

    #!/bin/bash
    echo "脚本名: $0"
    echo "参数个数: $#"
    echo "第一个参数: $1"
    for arg in "$@"; doecho "参数: $arg"
    done
    

    调用方式:./script.sh arg1 arg2

  2. 函数传参
    函数内通过$1$2获取参数:

    greet() { echo "Hello, $1"; }
    greet "World"  # 输出"Hello, World"
    

总结

  • 位置参数:用于处理命令行输入,通过$1$#等访问。
  • 变量:动态存储数据,需注意作用域和引用规则。
  • 结合特殊变量和参数置换,可编写更灵活的脚本。
http://www.xdnf.cn/news/807.html

相关文章:

  • 算法—选择排序—js(场景:简单实现,不关心稳定性)
  • day1 python训练营
  • 嵌入式芯片中的 SRAM 内容细讲
  • JavaScript 一维数组转不含零的两个数
  • 专题十七:NAT技术
  • TS—抽象类
  • 英语学习4.15
  • Linux常见指令解析(二)
  • 坐标轴QCPAxis
  • 集成运放的关键技术参数
  • AutoSAR从概念到实践系列之MCAL篇(二)——Mcu模块配置及代码详解(上)
  • 20.3 使用技巧6
  • 【统计分析120】统计分析120题分享
  • 字节跳动发布UI-TARS-1.5,入门AI就来近屿智能
  • using用法整理
  • 海拔与大气压关系,大气压单位,气压传感器对比
  • RV1126网络环境TFTPNFS搭建(三)
  • 《Learning Langchain》阅读笔记4-基于 Gemini 的 Langchain:组装 LLM 应用的多个部分
  • 继承(2):
  • C语言基础
  • React 文章 分页
  • LACP协议解析
  • Python变量全解析:从基础到高级的命名规则与数据类型指南
  • 数据结构——栈
  • 20. git diff
  • PTA | 堆中的路径
  • 硬件工程师笔记——电子器件汇总大全
  • 计算机视觉与深度学习 | LSTM原理,公式,代码,应用
  • 选择一个靠谱的小程序开发服务商要考虑哪些方面
  • 数字孪生废气处理工艺流程