一、前言
变量是 Shell 编程的基础,所有判断、循环、函数、脚本逻辑都依赖变量。Shell 变量分为四大类:自定义变量、环境变量、位置变量、特殊内置变量。本篇全覆盖定义、赋值、取值、规则、实战场景、面试考点。
二、自定义变量(普通变量)
1. 定义规则(必考)
变量名由字母、数字、下划线组成,不能以数字开头
等号两边绝对不能有空格
字符串默认不用引号,含空格必须加双引号
变量默认都是字符串类型,无严格数据类型
2. 定义与调用
#!/bin/bash name="运维笔记" age=18 # 调用变量 echo $name echo ${age}3. 变量赋值方式
# 1. 直接赋值 a=100 # 2. 命令结果赋值(重点) time=$(date +%H:%M:%S) echo $time # 3. 交互式输入赋值 read -p "请输入内容:" input echo "你输入的是:$input"4. 变量销毁
unset name三、环境变量(全局变量)
普通变量仅当前 Shell 有效;环境变量全局有效,子 Shell 也能继承,常用于系统配置、路径、脚本全局参数。
1. 定义环境变量
# 临时环境变量(当前终端有效) export SCHOOL="LinuxStudy"2. 永久环境变量
用户级:
~/.bashrc、~/.bash_profile系统级:
/etc/profile
写入 export 配置后,执行source /etc/profile生效。
3. 常见系统环境变量
echo $PATH # 系统命令路径 echo $USER # 当前用户 echo $HOME # 家目录 echo $PWD # 当前路径 echo $SHELL # 默认解释器四、位置变量(脚本传参核心)
执行脚本时,跟在脚本后的参数,自动接收,无需定义,多用于脚本传参。
位置变量参数表
$0:脚本本身名称$1 $2 ... $9:第1~9个参数${10}:第10个参数(必须大括号)$#:参数总个数$*:所有参数整体作为一个字符串$@:所有参数独立列表(循环首选)
实战案例 test.sh
#!/bin/bash echo "脚本名:$0" echo "第一个参数:$1" echo "参数总数:$#" echo "所有参数:$*"执行:bash test.sh 11 22 33
五、特殊变量面试考点($* 和 $@ 区别)
$*:将所有参数看成一个整体
$@:将所有参数看成独立列表
for循环遍历参数,永远用 $@
六、变量总结
自定义变量:局部、当前Shell、临时使用
环境变量:全局、子Shell继承、系统配置
位置变量:脚本传参、自动化脚本必备