Shell脚本学习笔记——符号(3)

Shell变量shell是弱类型语言,原则上,不是特别强调shell变量,或者shell变量可以放很多常见内容,这点和传统的C/C++有很大不同。shell变量也不需要提前定义,或者不牵扯到定义一说,需要时直接使用即可。

  • shell的赋值和命名规则
myval="hello world"

注意:变量名和等号之间不能有空格

如果变量名和等号之间出现了空格,就会被shell解释成命令和命令行参数。

变量名的命名需遵循如下规则:

    (1)命名只能使用字母、数字和下划线,并且首个字符必须为字母;

    (2)中间不能有空格,可以使用下划线;

    (3)不能使用标点符号;

    (4)不能使用bash中的关键字(可以用help命令查看保留关键字)。

另外,shell变量可以放入很多内容:

mystr="hello world"
myint=100
myfloat=3.14
mychar=c

所有的变量都不需要先定义后使用,而是直接使用即可。

使用一个赋值过的变量,只需在变量名之前加上 $ 符号即可:

echo $mystr
echo $myint
echo $myfloat
echo $mychar

运行程序,即可将变量的值输出到屏幕上。

Shell脚本学习笔记——符号(3)_第1张图片

有时候,我们会遇到这样的问题:


我们原本是想输出字符串“one  worldone  dream”,但是实际上呢?


我们可以看到,实际上只输出了一部分。原因就是Shell将mystrone当成了一个新的变量,由于该变量还未被使用过,所以输出的是空字符串。

那么我们如何解决这种问题呢?在Shell中,正确的字符串拼接方法是怎样的呢?


变量名外面的花括号是可选的,加不加都可以,加花括号是为了帮助解释器识别变量的边界。所以我们推荐给所有的变量加上花括号,尤其是这种类型的字符串拼接时。这是一个好的编程习惯。

我们再运行程序,就可以得到理想的结果:



已经定义过的变量,可以被重新定义。比如:

Shell脚本学习笔记——符号(3)_第2张图片

这样写是合法的,我们运行代码,就可以得到与预期相同的结果:



当我们定义了一个值,并且不希望这个值再被修改时,应该怎么做呢?可以使用readonly命令,将变量定义为只读变量。只读变量的值不能被改变。

我们继续沿用上面这个例子,稍作修改:

Shell脚本学习笔记——符号(3)_第3张图片

我们将mystr这个变量设置为只读变量,然后尝试对其重新定义,这时就会报错,提示我们mystr是一个只读变量,它的值不能被改变。


使用unset命令可以删除变量

Shell脚本学习笔记——符号(3)_第4张图片

被删除的变量,内容会被清空。所以我们可以看到,当我们删除mystr这个变量后再将其显示到显示器上时,输出的就是一个空字符串。一般不再被使用的变量需要unset。

但是,unset命令不能删除只读变量

Shell脚本学习笔记——符号(3)_第5张图片

这个原因,就是我们上面说的,只读变量的值不能被改变。所以我们不能用unset去删除只读变量。




你可能感兴趣的:(Shell脚本)