今天回顾下 Linux 的变量
本次内容来此 书本 鸟哥Linux私房菜,特此声明;
1. 变量的命令规则
- 变量与变量的内容以一个等号来连接
- myname=Coder
- 等号两侧不能有空格:空格在变量值中需要做转义处理
- nyname = Coder #command not found
- 变量名必须以 字母开头,可以由字母和数字组成, 切记不能以数字开头,会报错
- 9myname=Coder # command not found
- 变量值中要是有空格需要处理
- 用双引号将变量值结合起来
- var=”lang is”
- 用单引号将变量值集合起来
- var=’lang is’
- 使用转义字符 \
- var=lang\ is
- 用双引号将变量值结合起来
那么双引号和单引号的区别是什么呢?
- 双引号 : 在出现特殊字符如 $ 等,可以保持原本的特性:
- var=”lang is $LANG” == lang is en_US.UTF-8
- 单引号 : 在出现特殊字符式子,按一般纯文本字符处理
- var=”lang is LANG"==langis LANG
- 变量值得内容增加时,
- PATH=”$PATH”:/~/bin
- PAHT=${PATH}:/home/bin
- 在一串指令的执行中,还需要执行其它额外的指令所提供的信息时:
- 使用 $(指令)
- var=/lib/modules/$(uname -r)/kernel
- 使用 ‘指令’
- var=/lib/modules/’uname -r’/kernel
- 使用 $(指令)
- 将变量设为环境变量
- export PATH
- 取消变量:
- unser myname
2. 环境变量的功能;
- 使用 env 和 export 查看环境变量与常见环境变量说明;
- 使用 set 观察所有的变量 环境变量与自定义的变量;
- export var: 自定义变量转换成环境变量
- 对于环境变量和自定义变量的说明大家都知道,就不复习了,引用书上一段话:当启动一个shell, OS 会分配一记忆区给 shell 使用,
这个内存里的变量可以给子程序使用;若在父程序利用 export 功能,可以让自定义变量的内容写到上述的记忆区当中(环境变量);当加载另一个 shell 时(亦即启动一个子程序,而离开了原本的父程序,)子 shell 可以将夫 shell 的环境变量所在的记忆区块倒入到自己的环境变量区块当中;
- 对于环境变量和自定义变量的说明大家都知道,就不复习了,引用书上一段话:当启动一个shell, OS 会分配一记忆区给 shell 使用,
- 变量的键盘读取
- read -p “Please keyin you filename: ” filename
- system.in readme.txt
- echo $filename : readme.txt
- read -p “Please keyin you filename: ” filename
- 宣告变量的类型
- declare [-aixr] var
- -a : 将var 定义为数组类型
- -i : 将 var 定义为整数类型
- -x : 将 var 声明为环境变量
- -r : 将变量设置为只读
- declare [-aixr] var
- 数组变量
- var[1]=”small”
- var[2]=”big”
- “ var[1], {var[2]}”
3. 变量内容的删除、取代和替换
- ${变量#关键词}
- 若变量内容从头开始的数据符合 关键词,则将符合的 最短 数据删除,
${变量##关键词}
- 若变量内容从头开始的数据符合 关键词, 则将符合的 最长 数据删除,
${变量%关键词}
- 若变量内容从尾部开始的数据符合 关键词,则将符合的 最短 数据删除,
- ${变量%%关键词}
- 若变量内容从尾部开始的数据符合 关键词, 则将符合的 最长 数据删除,
${变量/旧字符串/新字符串}
- 若变量内容符合旧字符串,则 第一个 旧字符串会被新字符串取代,
${变量//旧字符串/新字符串}
- 若变量内容符合旧字符串,则 全部 旧字符串会被新字符串取代,
变量初始值得设定: 判定一个变量是否存在,如果变量存在则使用既有的设定,如果变量不存在则给定一个常用的设定。
- var1=${var2-expr}
- 如果var2没有设定,则var1就取expr的值; 否则取var2设定的值;
- var1=${var2:-expr}
- 如果var2么有设定,或者为空,则var1取expr的值