Shell 变量和参数

掌握 Shell 变量定义、使用和参数传递,构建灵活的脚本程序

变量基础

变量定义和使用

# 定义变量(注意等号两边不能有空格)
name="Linux Cloud Lab"
count=100
version=2.0
# 使用变量
echo "欢迎来到 $name"
echo "学员数量: $count"
echo "版本: $version"

变量命名规则

  • 只能包含字母、数字和下划线
  • 必须以字母或下划线开头
  • 区分大小写
  • 不能使用 Shell 关键字

环境变量

常用环境变量

$HOME用户主目录
$PATH可执行文件路径
$USER当前用户名
$SHELL当前Shell
$PWD当前工作目录
$HOSTNAME主机名
$LANG系统语言
$RANDOM随机数

设置和导出环境变量

# 设置局部变量
MY_VAR="hello"
# 导出为环境变量
export MY_VAR
# 或者一步完成
export MY_VAR="hello"
# 查看所有环境变量
env
# 查看特定变量
echo $MY_VAR

位置参数

位置参数说明

$0脚本名称
$1, $2, ...第1、2个参数
$#参数个数
$*所有参数(字符串)
$@所有参数(数组)
$?上个命令退出状态

位置参数示例脚本

#!/bin/bash
# 文件名: params.sh
echo "脚本名称: $0"
echo "参数个数: $#"
echo "第一个参数: $1"
echo "第二个参数: $2"
echo "所有参数: $@"
# 检查参数个数
if [ $# -lt 2 ]; then
echo "用法: $0 参数1 参数2"
exit 1
fi
运行示例: ./params.sh hello world

特殊变量

进程相关变量

$$当前进程ID
$!后台进程ID
$?上个命令退出状态

特殊变量使用示例

#!/bin/bash
echo "当前进程ID: $$"
# 启动后台进程
sleep 10 &
echo "后台进程ID: $!"
# 检查命令执行状态
ls /nonexistent 2>/dev/null
if [ $? -eq 0 ]; then
echo "命令执行成功"
else
echo "命令执行失败"
fi

变量操作技巧

字符串操作

text="Hello World"
# 获取字符串长度
echo $#text # 输出: 11
# 字符串截取
echo $text:0:5 # 输出: Hello
echo $text:6 # 输出: World
# 字符串替换
echo $text/World/Linux # 输出: Hello Linux

默认值设置

# 如果变量未设置,使用默认值
echo $name:-"默认用户"
# 如果变量未设置,设置并使用默认值
echo $name:="默认用户"
# 如果变量未设置,显示错误信息
echo $name:?"变量未设置"

数组变量

# 定义数组
fruits=("apple" "banana" "orange")
# 访问数组元素
echo $fruits[0] # 第一个元素
echo $fruits[@] # 所有元素
echo $#fruits[@] # 数组长度
# 遍历数组
for fruit in "$fruits[@]"; do
echo "水果: $fruit"
done

继续学习

掌握了变量和参数后,继续学习更多 Shell 编程技能