Linux Shell入门学习(二)

1. Shell变量

无论哪一门编程语言,变量都是一个必不可少的部分,shell脚本语言也是如此。变量的作用是用来存储数据,大多数编程语言在定义变量时都需要指明变量的类型,例如整型,字符型等等。但是shell脚本语言在定义变量时无需指明变量类型直接赋值即可。

a=5
b=6.6
str="abc"

如上,在shell脚本语言中直接赋值即可定义变量。但是值得注意的是在赋值时,等号的两边不能有空格。
和大多数的编程语言一样,在变量名称的命名上也有一些规则来限制,shell脚本语言变量命令规则如下:
1.命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
2.中间不能有空格,可以使用下划线(_)。
3.不能使用标点符号。
4.不能使用bash里的关键字。
上述规则也和很多编程语言中的规则大同小异,应该很容易记忆。总之命名变量不要采用一些奇行怪异的名字就对了。

2. 变量的类型

shell变量也有其作用域,按照作用域的不同,shell变量被分为三种类型,分别是局部变量,全局变量和环境变量。
局部变量就是在shell脚本中的函数中定义的变量。
全局变量就是在脚本中的任何部分都能访问的变量。
环境变量则是所有shell脚本都能访问的变量,例如Path变量等等。

3. 使用变量

使用一个已经被定义的变量,只需要在变量前面加上$符号即可。

#!/bin/bash
addr="www.baidu.com"
echo $addr

在使用变量时,建议给变量加上大括号,以便解释器能够分清变量的边界。

#建议下面这种使用变量的方法
echo ${addr} 

可以看看如下情况:

#!/bin/bash
a=59
ab=99
echo "print $ab"

在没有大括号的情况下,shell默认ab是变量名会输出99,但是有可能shell的编写者本意是输出a的值,误多打了一个b。所以为了编程的规范性,最好对要使用的变量采用大括号囊括起来。
变量在被定义后也可以重复定义,如下:

a=50
echo $a
a=100
echo $a

除了使用数字,字符串等对变量进行赋值,也可以将命令的结果赋值给变量。

#!/bin/bash
a=$(pwd)
echo $a

说明:pwd命令是获取当前路径,该脚本会将脚本所在的绝对路径赋值给a,再输出a。
除了pwd命令,也还有很多命令的结果都可以赋值给shell的变量。特别是一些通用配置的脚本,更是经常把命令的结果赋值给变量以存储当前系统的一些环境。
在C语言中,scanf函数可以从键盘读取数据赋值给变量,在shell中依旧有相同的赋值方法,不过shell中就不是用scanf了,而是采用read。具体用法如下:

#!/bin/bash
read a
echo $a

上例中,通过read读取键入的数据并且赋值给a。这是一个阻塞的动作,在没有输入数据之前,该shell进程会一直阻塞在这里。

4. 只读变量

在c语言中,被const修饰的变量是只读变量,一旦被修饰为只读变量就不能够在修改该变量。在shell中也有只读变量一说,通过readonly命令可以将一个变量修饰为只读变量,后续也不能对该变量进行修改,否则会报错。

#!/bin/bash
addr="www.baidu.com"
echo $addr
readonly addr
addr="www.google.com"
echo $addr

运行该脚本,会有如下错误提示:
line 5: addr: readonly variable
addr是只读变量,不能修改其值。
还有需要注意的是,如果在定义变量时就申明为只读变量,则需要立即复制,否则该变量就是空的,毫无意义。

#!/bin/bash
readonly a
echo $a

输出空。

5. 删除变量

shell中可以使用unset命令删除已定义的变量。

#!/bin/bash
a=10
echo $a
unset a

删除变量之后,可以继续使用该变量,但是该变量的值是空的。另外只读变量是不能够被删除的。删除只读变量会引起报错。

#!/bin/bash
a=10
unset a
echo $a

输出空。
关于变量的学习到这就告一段落。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值