一,概念基础
1.变量的概念
顾名思义,变量就是一个可以变化的量。从本质来讲,变量就是在程序中保存用户数据的一块内存空间,变量名就是这块内存空间的地址。
在程序的执行过程中,保存数据的内存空间里面的内容可能会不断的发生改变,但是代表内存地址地址的变量名是始终未变的。
变量是写入内存的,当计算机重启后数据就会丢失,若要保存就得写入磁盘。
2.变量的命名
变量的命名简单来说,就是把A的值放到B这个内存空间里面,例如:
如图我们把A的值放到以B为名的内存空间里面,通过echo调用以B为名的内存空间,出现的数据就是A
变量名的命名,没有做明确的规范,只是规定了以字母或下划线开头,由字母数字下划线组成的任意长度字符串,但是为了方便阅读,尽量使用简短明确的单词来命名。
3.变量的类型
shell不同于c语言的数据类型,它是一种动态类型和弱语言,与python类似,变量无需特别声明数据类型,可以说shell没有数据类型,任尔东西南北风,我自字符串存储。
如图我们可以看出,shell变量里存储的数据总是最新的,所以定不定义类型无关紧要,
4.变量的定义
前面我们说了,shell的数据是动态的,但是如果我们在程序里有一个变量是贯穿始终的,那么就得给它定义,
例如:declare -i 将变量定义为整型,结果只能是整数,否则会报错。
序号 | 选项 | 释义 |
1 | -f | 限制动作或显示为只函数名称和定义 |
2 | -F | 限制仅显示函数名称 (以及行号和源文件名,当调试时) |
3 | -g | 当用于 shell 函数内时创建全局变量; 否则忽略 |
4 | -p | 显示每个 NAME 变量的属性和值 |
5 | -a | 使 NAME 成为下标数组 (如果支持) |
6 | -A | 使 NAME 成为关联数组 (如果支持) |
7 | -i | 使 NAME 带有 `integer‘ (整数)属性 |
8 | -l | 将 NAME 在赋值时转为小写 |
9 | -n | 使 NAME 成为指向一个以其值为名称的变量的引用 |
10 | -r | 将 NAME 变为只读 |
11 | -t | 使 NAME 带有 `trace‘ (追踪)属性 |
12 | -u | 将 NAME 在赋值时转为大写 |
13 | -x | 将 NAME 导出 |