欢迎光临
我们一直在努力

Shell变量详解——自定义变量、环境变量、位置变量、特殊变量(全集)

一、前言

变量是 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继承、系统配置

  • 位置变量:脚本传参、自动化脚本必备

  • 赞(0)
    未经允许不得转载:171主机测评 » Shell变量详解——自定义变量、环境变量、位置变量、特殊变量(全集)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址