xDroid's Blog

20.1 Shell 变量 (从新手到菜鸟的Linux教程)

刚才看了一眼 bash 的文档,真的是被文档的详尽吓到了= =

唔,那么先从变量的使用入手吧。

要定义变量的话,直接使用这种语法

name=[value]

根据文档,如果 value 没有给出,默认 name 是空字符串。

使用变量的话要加美元符 $ 搞得和 php 一样满屏幕是 dollars

length=10
echo $length #> 10
echo ${length} #> 10

唔,这边可能会造成一种理解是 length 作为参数传给了 echo ;这样不是很准确,应该说是 $length 或者 ${length} 被 bash 解释为 10 然后才作为参数传给 echo 。举个例子验证这一点的话

length=10
$length #> 10: command not found

经常因为忘了 echo 出现找不到命令的提示就很尴尬了。

$ 和不加有什么区别呢?区别在于不加的话 bash 会把 $ 之后的单词(即最长未包含空白字符的字符串)视为变量,于是不加的话可能会造成歧义

length=10
echo The bridge is $lengthkm long. #> The bridge is  long.
echo The bridge is ${length}km long. #> The bridge is 10km long.

代码高亮也提示你们了吧。


要删除变量用内置命令 unset

unset name

然鹅(除了数组以外)删掉一个变量和赋给它空串有什么区别……反正弱类型……


刚才把脚本输入测试的时候懒得开 vim (我是有多懒),直接用 heredoc ,结果所有 $ 和变量名全被解释了 气哭 不知道是不是一个好的特性。