Shell 脚本学习大全(从入门到精通)

Shell 脚本是 Linux/Unix 环境下自动化操作的核心工具,基于 Bourne-Again Shell(bash,最主流)编写,能批量执行命令、实现逻辑控制、处理文本 / 文件等。本文从基础语法→进阶特性→实战案例→最佳实践全面覆盖,适合零基础到进阶学习。

一、基础入门:Shell 脚本核心概念

  1. 脚本基础规范

(1)脚本文件结构

一个标准的 Shell 脚本包含 3 部分:

#!/bin/bash # 解释器声明(必须放在第一行,指定用 bash 执行)
 # 注释:以 # 开头,单行注释(无多行注释,可通过 :<<EOF ... EOF 模拟)
 echo "Hello Shell!" # 执行命令
  • #!/bin/bash 称为 Shebang,告诉系统用 /bin/bash 解释脚本;

  • 若省略 Shebang,系统会用当前默认 Shell(通常也是 bash)执行。

(2)脚本执行方式
执行方式 命令示例 特点
作为可执行文件(推荐) chmod +x test.sh && ./test.sh 脚本需有执行权限,按 Shebang 指定解释器执行,独立进程运行
用 bash 直接执行 bash test.sh / sh test.sh 无需执行权限,强制用 bash/sh 解释,忽略 Shebang
嵌入当前 Shell 执行 source test.sh / . test.sh 不启动子进程,脚本变量 / 命令影响当前 Shell 环境(如配置环境变量)
  1. 变量:Shell 数据存储核心

(1)变量定义与使用
  • 定义规则:变量名只能包含字母、数字、下划线,不能以数字开头,等号 = 前后无空格;

  • 使用方式:通过 $变量名${变量名} 引用(推荐加 {},避免歧义)。

  • # 基础定义
    name="Shell Script"age=20# 引用
    echo "名称:$name"       # 输出 名称:Shell Script
    echo "年龄:${age}岁"    # 输出 年龄:20岁(加 {} 避免和后续字符混淆)
    # 只读变量(定义后不可修改/删除)
    readonly PI=3.14# PI=3.1415  # 执行会报错:-bash: PI: readonly variable# 删除变量(unset 不能删除只读变量)
    unset age
    echo $age  # 输出空行

(2)特殊内置变量(高频使用)
变量 含义
$0 脚本文件名(如 ./test.sh)
$1~$9 脚本的位置参数,$1 是第一个参数,$2 是第二个,以此类推
${10} 第 10 个参数(需加 {},直接 $10 会被解析为 $1+0)
$# 位置参数的总个数
$* 所有位置参数(视为一个整体,如 "$1 $2 $3")
$@ 所有位置参数(视为独立个体,如 "$1" "$2" "$3")
$? 上一条命令的退出码(0 = 执行成功,非 0 = 失败)
$$ 当前脚本的进程 ID(PID)
$! 上一个后台运行进程的 PID

示例:

echo "第一个参数:$1"
echo "参数总数:$#"
echo "所有参数(\$*):$*"
echo "所有参数(\$@):$@"
# 执行:./test.sh a b c# 输出:# 脚本名:./test.sh# 第一个参数:a# 参数总数:3# 所有参数($*):a b c# 所有参数($@):a b c
(3)环境变量与自定义变量
  • 自定义变量:仅当前 Shell 进程有效(子进程不继承);

  • 环境变量:全局有效,可通过 export 声明,子进程会继承。

# 自定义变量
temp="临时变量"
# 环境变量
export PATH="$PATH:/usr/local/bin"  
# 扩展系统路径
export LANG=zh_CN.UTF-8             # 设置字符编码
  1. 输入输出:与用户 / 文件交互

(1)echo:标准输出

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值