Shell 变量
变量是 Shell 中存储数据的「命名盒子」,用来保存字符串或数字。Linux 脚本与命令行的核心就是把值放进变量、再取出来用,理解变量是写脚本的第一步。
定义与使用变量
定义变量时等号两边不能有空格,名称只能由字母、数字、下划线组成且不能以数字开头:
name=张三
age=18
echo $name
# 输出:张三
echo ${age}
# 输出:18
echo "我叫 $name,今年 $age 岁"
# 输出:我叫 张三,今年 18 岁
单引号与双引号
双引号内的变量会被解析,单引号内的内容原样输出:
word="hello"
echo "$word world"
# 输出:hello world
echo '$word world'
# 输出:$word world
只读变量与删除变量
readonly 让变量不可再修改,unset 删除变量:
url="https://example.com"
readonly url
url="https://other.com"
# 报错:url: readonly variable
unset url # 删除普通变量
echo "${url:-空}" # 变量为空时输出默认值
# 输出:空
特殊变量
Shell 内置一批特殊变量,脚本中最常用:
echo "$0" # 脚本文件名,如 test.sh
echo "$1" # 第一个参数
echo "$#" # 参数个数
echo "$@" # 所有参数列表
echo "$?" # 上一条命令的退出码,0 表示成功
echo "$$" # 当前进程号
./demo.sh a b c # 运行:脚本名 demo.sh,3 个参数
# 输出:demo.sh a 3 a b c 0 12345
变量与命令替换
把命令执行结果赋给变量,用反引号或 $( ):
today=$(date +%F)
echo "今天是 $today"
# 输出:今天是 2025-01-06
files=`ls | wc -l`
echo "当前目录有 $files 个文件"
小结
Shell 变量记住三条:等号两边不空格、取用加 $、双引号会解析单引号不会。再配合 $1/$#/$? 等特殊变量与 $(命令) 替换,就能写出灵活的自动化脚本。