1. 变量与变量的内容以一个等号“=”来连接
csdn1013@LAPTOP-QNFOQI5C:~$ myname=csdn1013
csdn1013@LAPTOP-QNFOQI5C:~$ echo $myname
csdn1013
csdn1013@LAPTOP-QNFOQI5C:~$
2.等号两边不能直接 接空格符,否则会提示错误
csdn1013@LAPTOP-QNFOQI5C:~$ myname =cs1013
myname: command not found
csdn1013@LAPTOP-QNFOQI5C:~$ myname= csdn1013
csdn1013: command not found
csdn1013@LAPTOP-QNFOQI5C:~$ myname =csdn1013
myname: command not found
3. 变量的名称只能时英文字母和数字,但是开头不能时数字。这与大部分编程语言的规则一致
csdn1013@LAPTOP-QNFOQI5C:~$ 2myname=csdn1013
2myname=csdn1013: command not found
4.变量内容如果有空格,可以用双引号或者单引号将变量的内容结合起来,但是
- 双引号内的特殊字符如$等,会保留原本的特性,例如:
csdn1013@LAPTOP-QNFOQI5C:~$ var="lang is $LANG"
csdn1013@LAPTOP-QNFOQI5C:~$ echo $var
lang is C.UTF-8
csdn1013@LAPTOP-QNFOQI5C:~$ echo $LANG
C.UTF-8
#var变量的内容中包含了空格,这是通过双引号来实现的。双引号中的$LANG, 会保留其原来的特性。
- 单引号内的特殊字符就是一般的文本,不会保留特殊字符的属性
csdn1013@LAPTOP-QNFOQI5C:~$ var='lang is $LANG'
csdn1013@LAPTOP-QNFOQI5C:~$ echo $var
lang is $LANG
csdn1013@LAPTOP-QNFOQI5C:~$ echo $LANG
C.UTF-8
5. 可以用转义字符"\"将特殊符号转变成一般字符
csdn1013@LAPTOP-QNFOQI5C:~$ var="lang is \$LANG"
csdn1013@LAPTOP-QNFOQI5C:~$ echo $var
lang is $LANG
#虽然在双引号中使用了$符号,但是使用转义字符将$转义了,所以var的内容是“lang is $LANG”
6.如果需要将一条命令的结果直接传递给一个变量,可以使用`命令`或者$(命令)。注意前者不是单引号。例如:
csdn1013@LAPTOP-QNFOQI5C:~$ version=`uname -r`
csdn1013@LAPTOP-QNFOQI5C:~$ echo $version
4.4.0-19041-Microsoft
csdn1013@LAPTOP-QNFOQI5C:~$ version=$(uname -r)
csdn1013@LAPTOP-QNFOQI5C:~$ echo $version
4.4.0-19041-Microsoft
7. 为变量增加内容,可以用如下方式:
csdn1013@LAPTOP-QNFOQI5C:~$ echo $version
4.4.0-19041-Microsoft
csdn1013@LAPTOP-QNFOQI5C:~$ version=$version:linux
csdn1013@LAPTOP-QNFOQI5C:~$ echo $version
4.4.0-19041-Microsoft:linux
8. 如果需要在其他子进程中执行,则需要用export将该变量变成环境变量
export PATH
9. 通常系统默认变量为大写,用户自定义的变量可以小写。当然这取决于个人习惯
10. 取消变量的方法为unset
csdn1013@LAPTOP-QNFOQI5C:~$ version=$(uname -r)
csdn1013@LAPTOP-QNFOQI5C:~$ echo $version
4.4.0-19041-Microsoft
csdn1013@LAPTOP-QNFOQI5C:~$ unset version
csdn1013@LAPTOP-QNFOQI5C:~$ echo $version
参考:鸟哥的Linuxs私房菜