118 lines
2.6 KiB
Markdown
118 lines
2.6 KiB
Markdown
### 部分概念
|
||
- 变量和值之间不能有空格
|
||
- 默认所有变量类型都是字符串
|
||
- 变量名区分大小写
|
||
- 变量名不能含有特殊符号 & ? * #
|
||
- 变量名不能以数字开头
|
||
- 可以使用下划线开头
|
||
- 名字尽量做到见名知意
|
||
|
||
### 切片
|
||
- ${变量名:索引开始位置:切片长度}
|
||
- 切片长度可以超过变量实际长度
|
||
```
|
||
me@me-EQ59:~$ A=123456
|
||
me@me-EQ59:~$ echo $A
|
||
123456
|
||
me@me-EQ59:~$ echo ${A}
|
||
123456
|
||
me@me-EQ59:~$ echo ${A:2:4}
|
||
3456
|
||
me@me-EQ59:~$
|
||
```
|
||
|
||
### 命令的结果赋值给变量
|
||
- 反引号 包裹
|
||
```
|
||
me@me-EQ59:~$ A=`date +'%F %T'`
|
||
me@me-EQ59:~$ echo $A
|
||
2023-06-22 22:48:00
|
||
me@me-EQ59:~$
|
||
```
|
||
- $() 包裹
|
||
```
|
||
me@me-EQ59:~$ A=$(date +'%F %T')
|
||
me@me-EQ59:~$ echo $A
|
||
2023-06-22 22:49:25
|
||
me@me-EQ59:~$
|
||
```
|
||
|
||
### 交互式给变量赋值
|
||
- read 参数 变量名
|
||
```
|
||
me@me-EQ59:~$ read name
|
||
name
|
||
me@me-EQ59:~$ echo $name
|
||
name
|
||
me@me-EQ59:~$
|
||
```
|
||
|
||
- 输入提示
|
||
```
|
||
me@me-EQ59:~$ read -p "Input your name:" name
|
||
Input your name:tom
|
||
me@me-EQ59:~$ echo $name
|
||
tom
|
||
me@me-EQ59:~$
|
||
```
|
||
|
||
- 输入提示,隐藏用户输入内容
|
||
```
|
||
me@me-EQ59:~$ read -sp "Input your password:" pass
|
||
Input your password:me@me-EQ59:~$
|
||
me@me-EQ59:~$ echo $pass
|
||
123456
|
||
me@me-EQ59:~$
|
||
```
|
||
|
||
- 限制输入长度,超过长度后自动结束输入
|
||
```
|
||
me@me-EQ59:~$ read -n 5 -p "Input your name: " name
|
||
Input your name: zhangme@me-EQ59:~$ san
|
||
找不到命令 “san”,但有 16 个相似命令。
|
||
me@me-EQ59:~$ echo $name
|
||
zhang
|
||
me@me-EQ59:~$
|
||
```
|
||
|
||
- 限制用户输入超时时间,超过限制时间自动关闭输入
|
||
```
|
||
me@me-EQ59:~$ read -t 3 -p "Input your name:" name
|
||
Input your name:me@me-EQ59:~$
|
||
me@me-EQ59:~$ echo $name
|
||
|
||
me@me-EQ59:~$
|
||
```
|
||
|
||
### declare 定义限制变量
|
||
- https://www.runoob.com/linux/linux-comm-declare.html
|
||
- -i 整型,限定类型后不符合类型的值,会被设置为默认值
|
||
```
|
||
me@me-EQ59:~$ declare -i A=1234
|
||
me@me-EQ59:~$ echo $A
|
||
1234
|
||
me@me-EQ59:~$ A=hello
|
||
me@me-EQ59:~$ echo $A
|
||
0
|
||
me@me-EQ59:~$
|
||
```
|
||
- -r 只读变量,不能进行 unset 操作
|
||
- -x 设置环境变量
|
||
|
||
### 变量分类
|
||
- 本地变量,只在当前进程中有效
|
||
```
|
||
me@me-EQ59:~$ echo $A
|
||
0
|
||
me@me-EQ59:~$ bash
|
||
me@me-EQ59:~$ echo $A
|
||
|
||
me@me-EQ59:~$
|
||
```
|
||
- 环境变量,当前进程有效,并且能够被子进程调用
|
||
- env 查询当前用户的环境变量
|
||
- set 查询当前有的所有变量,包括环境变量和临时变量
|
||
- 全局变量:全局所有的用户和程序都能调用,且继承,新建的用户也能默认调用
|
||
- 系统变量:shell 本身已经固定好的名字和作用
|
||
![8801a0e5453be03569f1ee0cf0adfda0.png](../../_resources/8801a0e5453be03569f1ee0cf0adfda0.png)
|