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/$#/$? 等特殊变量与 $(命令) 替换,就能写出灵活的自动化脚本。

笔记加载中…