Skip to content

Commit f35feb5

Browse files
author
luzhicheng
committed
更新md
更新md
1 parent ea8fa77 commit f35feb5

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

linux/Shell变量.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Shell变量
2+
## 1.声明变量、使用变量、删除变量
3+
#### 声明变量
4+
```python
5+
# 方式一
6+
var=abc
7+
# 方式二
8+
var='abc'
9+
# 方式三
10+
var="abc"
11+
```
12+
#### 使用变量
13+
```python
14+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# var=abc
15+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo $var
16+
abc
17+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo ${var}
18+
abc
19+
```
20+
#### 单引号与双引号区别
21+
* 用单引号包围变量值时,单引号里内容是什么就输出什么,原样输出字符串
22+
* 用双引号包围变量值时,输出时会先解析里面的变量和命令,再输出解析后的字符串
23+
24+
```python
25+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# var=abc
26+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# info='var is ${var}'
27+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo $info
28+
var is ${var}
29+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# info="var is ${var}"
30+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo $info
31+
var is abc
32+
```
33+
#### 只读变量
34+
```python
35+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# readonly var
36+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# var=def
37+
-bash: var: readonly variable
38+
```
39+
#### 删除变量
40+
```python
41+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo $info
42+
var is abc
43+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# unset info
44+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo $info
45+
46+
```
47+
#### 把命令的结果赋值给变量
48+
* 方式一,反引号
49+
* 方式二,$()
50+
* 如果被替换的命令的输出内容包括多行,或者含有多个连续的空白符,那么在输出变量时应该将变量用双引号包围,否则系统会使用默认的空白符来填充,这会导致换行无效,以及连续的空白符被压缩成一个。
51+
52+
```python
53+
# 方式一,反引号
54+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# cmd=`ls`
55+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo $cmd
56+
hello.sh shell_1.sh shell_2.sh shell_3.sh shell_4.sh shell_5.sh shell_6.sh
57+
# 方式二,$()
58+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# cmd=$(ll -lh)
59+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo $cmd
60+
total 28K -rw-r--r-- 1 root root 145 Feb 24 16:50 hello.sh -rwxrwxrwx 1 root root 149 Mar 3 16:23 shell_1.sh -rwxrwxrwx 1 root root 333 Mar 3 16:40 shell_2.sh -rwxrwxrwx 1 root root 67 Mar 3 16:46 shell_3.sh -rwxrwxrwx 1 root root 79 Mar 3 17:05 shell_4.sh -rwxrwxrwx 1 root root 78 Mar 4 11:30 shell_5.sh -rwxrwxrwx 1 root root 114 Mar 4 13:41 shell_6.sh
61+
[root@iZ8vb6ughzbdqkfd58dowoZ bin]# echo "$var"
62+
total 32K
63+
-rw-r--r-- 1 root root 145 Feb 24 16:50 hello.sh
64+
-rwxrwxrwx 1 root root 149 Mar 3 16:23 shell_1.sh
65+
-rwxrwxrwx 1 root root 333 Mar 3 16:40 shell_2.sh
66+
-rwxrwxrwx 1 root root 67 Mar 3 16:46 shell_3.sh
67+
-rwxrwxrwx 1 root root 79 Mar 3 17:05 shell_4.sh
68+
-rwxrwxrwx 1 root root 78 Mar 4 11:30 shell_5.sh
69+
-rwxrwxrwx 1 root root 114 Mar 4 13:41 shell_6.sh
70+
-rwxrwxrwx 1 root root 79 Mar 4 16:02 shell_7.sh
71+
```
72+
73+
## 2.变量的作用域
74+
#### 局部变量:只在函数内部使用,定义时要用local声明,如果不加local,则是表示全局变量
75+
```python
76+
#!/bin/bash
77+
78+
function func(){
79+
a=123 # 全局变量
80+
local b=333 # 局部变量
81+
}
82+
func
83+
echo $a # 123
84+
echo $b #
85+
```
86+
#### 全局变量
87+
**shell中定义的变量默认就是全局变量,仅在当前shell进程中有效。**
88+
#### 环境变量
89+
**全局变量只在当前shell进程中有效,对其他shell进程和子进程无效。如果通过export命令将全局变量导出,就是环境变量,在子进程中也有效。**
90+
通过export导出的环境变量只对当前进程及其子进程有效,如果顶层的父进程被关闭,环境变量也就消失了。如果要让一个变量在所有的shell中都有效,可以将变量写入shell配置文件中,shell进程每次启动时候进行初始化。

linux/main.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
1. [centos7安装nginx](centos7安装nginx.md)
1616
2. [nginx基本配置与参数说明](nginx基本配置与参数说明.md)
1717

18+
## Shell
19+
1. [Shell变量](Shell变量.md)
20+
1821

1922
## 常用命令
2023
1. [常用系统工作命令(echo, date, reboot, poweroff, wget, ps, top, pidof, kill, killall, whereis, locate, tar, sync)](Linux常用系统工作命令.md)

0 commit comments

Comments
 (0)