👱
师父,这脚本里怎么有些字前面带个 $ 符号?看着像银票一样。
👳
小宝,那叫变量。就像你给皇上起名“小玄子”,给建宁公主起名“建宁”。名字(变量名)是不变的,但指代的人(变量值)可以是任何人。用到的时候,前面加个 $ 就能把人叫出来。
📦 定义变量 (起花名)
在 Shell 里起名字非常简单,不用声明类型,直接划等号。
📜 起名规则
- name="Wei Xiaobao" (正确)
- name = "Wei Xiaobao" (❌ 错误!等号两边不能有空格!)
- 名字只能用英文字母、数字、下划线,首个字符不能是数字。
🗣️ 使用变量 (叫名字)
定义的时候不用 $,用的时候要加 $。
master="Chen Jinnan"
echo $master
echo ${master} # 加上花括号更稳妥,防止认错人
echo $master
echo ${master} # 加上花括号更稳妥,防止认错人
比如:echo "I am ${master}'s student." 如果不加花括号,系统会以为你在找 $master's 这个变量。
🔒 只读变量 (金口玉言)
有些名字是皇上御赐的,改不得。
readonly king="Kangxi"
king="Xiaobao" # ❌ 报错!这可是欺君之罪!
king="Xiaobao" # ❌ 报错!这可是欺君之罪!
🗑️ 删除变量 (革职查办)
不想用这个变量了,可以把它废掉。
unset master
echo $master # 啥也打印不出来,人已经不在了
echo $master # 啥也打印不出来,人已经不在了
注意:readonly 的变量不能 unset,皇上赐的官,你自己辞不掉。
🧵 字符串变量 (连珠炮)
变量里最常用的就是字符串。
- 单引号
' ':所见即所得。里面写$name也会原样输出$name,不进行替换。 - 双引号
" ":会解析。里面写$name会变成具体的值。
name="小玄子"
echo 'Hello, $name' -> 输出:Hello, $name
echo "Hello, $name" -> 输出:Hello, 小玄子
echo 'Hello, $name' -> 输出:Hello, $name
echo "Hello, $name" -> 输出:Hello, 小玄子
🖐️ 动手时刻:韦小宝的自我介绍
编写脚本,使用变量打印一段话。
- 编写
intro.sh:#!/bin/bash my_name="韦小宝" master="陈近南" echo "在下 ${my_name},家师 ${master}。" # 尝试修改只读变量 readonly secret="四十二章经" # secret="金瓶梅" <-- 这一行如果取消注释,运行会报错 - 运行查看结果:
bash intro.sh
💡 提示:记住,等号两边千万别加空格,这是新手最容易犯的错!