Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项
  BFbkpSjOcvWq 2023年11月02日 43 0


跟其他的高级开发语言一样,Linux Shell编程中使用的数据也需要保存在变量中。

Shell使用变量来控制其行为,并且可以通过更改变量值来更改Shell和其他程序的行为。

我们先来了解一下变量命令的规则、变量类型和使用变量时要注意的事项。

一、变量命名规则

Linux Shell编程中使用的变量,其命名必须遵循如下这些规则:

1.变量名只能使用英文字母,数字和下划线,且不能以数字开头。
2.变量名不能有空格。
3.变量名不能使用标点符号。
4.不能使用shell里的关键字(可用help命令查看保留关键字)。

按照上面的规则,变量名ab8_、a_b8、_ab8都是合格的变量名,而8ab_是不合格的变量名。

二、变量的类型

运行shell脚本时,会同时存在三种变量:

(一)环境变量

环境变量是在整个系统范围内可用的变量,并由所有衍生的子进程和外壳程序继承。所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。


必要的时候shell脚本也可以定义环境变量。


按照约定,环境变量应具有大写名称。

例如我们在之前使用过的变量SHELL。 

(二)局部变量

局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

(三)shell变量

shell变量是由shell的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。

三、使用变量时要注意的事项

(一)shell中使用变量前通常不需要事先为变量作出声明,只是在使用变量时(通常是赋初始值时)来创建它们。

例如:

user@host: ~ # var1=1
user@host: ~ # echo $var1
1

Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项_变量命名规则

其中:

var1=1 是声明变量var1并初始化其值为1

echo $var1 是显示变理var1的值。

(二)在给变量赋值时,变量名和赋值号(=)之间不能有空格。

例如:

user@host: ~ # var2 = 2
未找到 'var2' 命令,您要输入的是否是:
 命令 'par2' 来自于包 'par2' (universe)
var2:未找到命令

Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项_SHELL变量_02

由于 var2 = 2 中的赋值号=前后有空格,因此对shell来说,这条命令的功能并不是声明变量var2并初始化其值为2。

(三)Linux是一个区分大小写的系统,所以Shell中的变量名称区也分大小写,比如var1、Var1与 VAR1是三个不同的变量名。

user@host: ~ # var1=1
user@host: ~ # echo $var1
1
user@host: ~ # echo $Var1

user@host: ~ # echo $VAR1

user@host: ~ # 
 

Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项_环境变量_03

在上面的例子中,我们声明了变量var1并初始化其值为1,并没有声明变量Var1、VAR1和赋值,所以 echo $Var1 和  echo $VAR1没有显示他们的值。

四、 shell里的关键字

为了方便我们定义变量,我们还需要了解shell里的关键字。

查询shell里的关键字的方法有很多。例如,我们可以使用命令 compgen -k 来查看shell的关键字:

user@host: ~ # compgen -k
if
then
else
elif
fi
case
esac
for
select
while
until
do
done
in
function
time
{
}
!
[[
]]
coproc
user@host: ~ # 

Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项_变量命名规则_04

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
BFbkpSjOcvWq