shell 学习笔记 (二)——环境变量
2016-10-23 21:34
218 查看
env&&export
这两个命令均是列出当前系统中的所有的环境变量。set
显示系统中的所有变量。包括 环境变量,用户自定义变量,以及与你自己使用的shell相关接口的变量。几个重要的变量
LANG使用者的语系。
RANDOM
产生随机数的变量,介于0~32767之间
PS1(shell接口变量)
这个变量来指示你登陆的shell的提示前缀
$
这也是一个特殊的变量,代表目前使用shell的pid
lyt@n55sl:~$ echo $$ 8191
?
上一次执行指令所传回的值,通常来说,指令成功执行,会传回 0 ,否则会是其他数字,具体数字与指令本身有关
lyt@n55sl:~$ pwd /home/lyt lyt@n55sl:~$ echo $? 0 lyt@n55sl:~$ opopo opopo:未找到命令 lyt@n55sl:~$ echo $? 127
export:自定义变量转环境变量
自定义变量与环境变量的区别子程序会继承环境变量,自定义变量则不会继承
用法
export 变量名
对于环境变量的操作,子程序仅能继承父程序,不能将修改回传给父。
看下面的例子
┌─╼[~] └────╼ export a=lyt ┌─╼[~] └────╼ bash lyt@n55sl:~$ echo $a lyt lyt@n55sl:~$ a=zxw lyt@n55sl:~$ echo $a zxw lyt@n55sl:~$ exit exit ┌─╼[~] └────╼ echo $a lyt
环境变量为何可被子程序引用?
当启动一个shell,操作系统会分配一个记忆区块给shell使用,这个内存的内存变量可以让子程序取用。
父程序使用export功能,可以使自定义环境变量的内容写入上述记忆区块当中。
当加载另一个shell时,子shell可以将父shell的环境变量所在的记忆区块导入自己的环境变量区块当中。
变量键盘读取,数组,宣告
read用来读取来自键盘输入的变量
参数
-p 后接用单或双引号括起来的提示信息;
-t 后接等待用户输入的时间;
lyt@n55sl:~$ read -p "is this $SHELL ?" a is this /bin/zsh ?
declare / typeset
宣告变量的类型
参数
-a 数组
-i 整形
-x 环境变量
-r 只读,不能更改,不可unset
lyt@n55sl:~$ i=10+20 lyt@n55sl:~$ echo $i 10+20 lyt@n55sl:~$ declare -i i=10+20 lyt@n55sl:~$ echo $i 30
r参数来添加或取消环境变量属性,-r添加为环境变量,+r取消为用户自定 变量
┌─╼[~] └────╼ declare -x sss=10 ┌─╼[~] └────╼ env | grep sss sss=10 ┌─╼[~] └────╼ declare +x sss=10 ┌─╼[~] └────╼ env | grep sss ┌─╼[~] └╼
数组变量类型
声明 数组名[下标]=值
lyt@n55sl:~$ a[1]=20 lyt@n55sl:~$ a[0]=200 echo $a 200 lyt@n55sl:~$ echo ${a[0]} $a[1] 200 200[1] lyt@n55sl:~$ echo ${a[0]} ${a[1]} 200 20
由此可见,数组名的默认值是数组的第一个元素,要想正确的输出数组元素,必须用${数组名[下标]}。
变量内容的删除与取代
删除删除方式:# 或 %。
#:从前开始删除
%:从后开始删除
单个# 或 % ,取最短匹配
两个 # 或 % ,取最长匹配
写法:echo ${变量名 删除方式 匹配字符}
lyt@n55sl:~$ path=${PATH} lyt@n55sl:~$ echo $path /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 删除最后一个目录 lyt@n55sl:~$ a=${path%:*} lyt@n55sl:~$ echo $a /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
取代
echo ${变量/旧字符串/新字符串}
关键词 / 一个代表仅替换第一个匹配的,两个代表替换所有匹配的
lyt@n55sl:~$ echo $path /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 将所有local替换为大写 lyt@n55sl:~$ echo ${path//local/LOCAL} /usr/LOCAL/sbin:/usr/LOCAL/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/LOCAL/games:/snap/bin
相关文章推荐
- shell 脚本学习笔记-1 终端打印 变量 环境变量
- Linux-shell学习笔记--环境变量
- LINUX系统学习笔记管道符和作业控制 ,shell变量 , 环境变量配置文件
- fvwm学习笔记之环境变量 by stack
- RHCE课程-RH033Linux基础笔记四之shell以及环境变量
- Power Shell 学习笔记(三)变量
- JAVA学习笔记(一) 环境变量配置
- Java基础学习笔记(一)环境变量配置,数据类型,运算符,控制语句,循环语句
- shell学习笔记(二)shell变量与运算符
- Shell学习笔记(6)-高级变量之变量扩展
- debian学习笔记2,vim中$VIMRUNTIME,runtimepath的环境变量设置.
- 从学习export命令理解到的Shell环境和变量生存期
- Linux学习笔记——环境变量
- shell学习笔记一 变量
- 从学习export命令理解到的Shell环境和变量生存期(转)
- Java学习笔记--Lesson1(Java跨平台原理的剖析和Java环境变量的配置
- 尚观学习-shell-基础 & 环境变量 & 自定义变量