专业编程基础技术教程

网站首页 > 基础教程 正文

linux中shell变量是如何定义和使用的?

ccvgpt 2024-08-19 12:26:57 基础教程 13 ℃

shell变量用来存放各种数据内容,是shell脚本必不可少的组成部分,shell在定义变量时通常不需要指明类型,直接赋值就可以。使用一个定义过的变量,只要在变量名前面加美元符号$即可。

定义变量和使用变量

linux中shell变量是如何定义和使用的?

a=123 //a是变量名,123是赋给变量的值

echo $a //输出变量a的值 结果为123

注意:赋值号=的两边不能有空格。只在使用变量时加$,赋值时不能加。

在bash shell定义变量中,每一个变量的值都是字符串,即使将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。

例如:

a=123+1 //a是变量名,123+1是赋给变量的值

echo $a //输出变量a的值 结果为:123+1

Shell 支持以下三种定义变量的方式:

a=123

a='123'

a="123"

如果赋给变量的值不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号;如果赋给变量的值包含了空白符,那么就必须使用引号包围起来。

例:多种形式的定义变量

备注:运行结果显示中间有空格的赋值因为没有加引号而出现报错。

定义变量时,变量的值可以由单引号' '包围,也可以由双引号" "包围,他们的区别在于:

由上面运行结果可以看出:

以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量也会把它们原样输出。

以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名原样输出。

总结:如果变量的内容是数字,可以不加引号;如果需要原样输出就加单引号;其他没有特别要求的字符串等最好都加上双引号,定义变量时加双引号是最常见的使用场景。

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

  • 只能使用英文字母,数字和下划线,首个字符不能以数字开头
  • 中间不能有空格,可以使用下划线 _
  • 不能使用标点符号
  • 不能使用bash里的关键字(可用help命令查看保留关键字)

有效的 Shell 变量名示例如下:

abc ab_c _abc abc2

无效的变量命名:

a*bc 2abc

已定义的变量,可以被重新赋值,例如:

url="www.baidu.com"

echo $url

url="www.qq.com"

echo $url

输出:

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,运行会报错。例如:

url="www.baidu.com"

readonly url

url="www.qq.com"

echo $url

输出:

使用 unset 命令可以删除变量。变量被删除后不能再次使用;unset 命令不能删除只读变量。

例如:

输出:

数组变量

bash支持一维数组(不支持多维数组),数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

定义数组

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

数组名=(值1 值2 ... 值n)

读取数组

读取数组元素值的一般格式是:

${数组名[下标]}

例如:

数组变量名=(数值1 数值2 数值3) //数组下标以0开始编址

user=(a b c d) //数组变量中分别有a、b、c、d四个数值

echo ${user[0]} //输出变量user第1个数值 结果为a

echo ${user[@]} //输出变量user所有数值 结果为a b c d

注意:使用 @ 符号可以获取数组中的所有元素

以上内容供学习交流

Tags:

最近发表
标签列表