变量
在shell脚本中,单独的字符或者命令只能引用一次,对于变量,我们可以多次引用,且对变量的赋值修改方便。对于一条很长的命令或者频繁使用的路径等,我们可以赋值给一个变量,比如获得系统中所有用户的uid,要输入很长的一段命令,我们如果每次使用都输入命令是件很麻烦的事情,如果赋值变量,那么就会很方便。设置变量useruid
useruid= `cat /etc/passwd|cut -d: -f3|sort -n`使用时直接echo “$useruid”,超级方便,接下来具体介绍一下变量,今天具体介绍一下本地变量和环境变量
目 录
1、变量的命名法则
2、变量类型
3、bash变量种类
4、本地变量
5、环境变量
1、变量的命名规则
(1)不能使程序中的保留字:例如if, for
(2)只能使用字母、数字及下划线,且不能以数字开头
(3)见名知义
(4)统一命名规则:驼峰命名法
2、变量类型:
3、bash变量种类
根据变量的生效范围等标准可分为。
(1)本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell 的子shell进程均无效
当我们进入linux下,会自动进入一个bash ,在本地声明的变量,只能在当前bash下使用, 再进入子bash中,便不能使用了称为本地变量
SHLVL: 显示当前SHELL是几级bash 用法:echo $SHLVL
pstree 显示进程树
-p 同时显示进程的PID
$:显示当前的PID (运用为 echo $$)
可以看出本地变量仅对当前shell有效,当前shell的子shell进程
接下来我们看一下对同级的shell是否有效。
可以看出本地声明的变量对同级的bash下也不能使用
总结:对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
(2)环境变量:生效范围为当前shell进程及其子进程,父进程什么情况都无效
结论:环境变量仅对其子shell有效,对父shell无效。
结论:环境变量仅对其子shell有效,对其他无效。
(3)局部变量:生效范围为当前shell进程中某代码片断(通常指函数)
(4)位置变量: $1, $2, …来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
(5)特殊变量: $?, $0, $*, $@, $#,$$
4、本地变量
(1)变量的赋值
单独一个无值变量的意义不大,对于一个变量,往往是先赋值后引用
varname=’value’
可以使用引用value:
(1) 可以是直接字串; A=”hello Hi”
(2) 变量引用: A=”$USER”
USER 是bash的内部变量,表示当前用户
(3) 命令引用: A=`COMMAND` varname=$(COMMAND)
useruid= `cat /etc/passwd|cut -d: -f3|sort -n`
对于变量的赋值大家可能很清楚,但是对于变量的引用,为什么有时加双引号,有时不加引号,接下来具体讲一下变量的引用
(2)变量的引用
变量的引用主要用$
(1) $varname
主要在数字和一般字符串
(2)”$varname” 可以确定界限
(3) ${varname} 可以确定界限
当变量值当中包含换行符,如果希望引用出的值同样包含换行符,只能使用”$varname”
就像上面的useruid一样,由于获得的用户UID中每行都含有换行符,所以必须用””,如果不用 就会出现下列情况
所有UID排成的一行,因为不识别换行符,所以一定要使用”” ,才可以获得自己所需的信息
(4)特殊情况:
“”:弱引用,其中的变量引用会被替换为变量值
”:强引用,其中的变量引用不会被替换为变量值,而保持原字符串
例如将A=abc ,当引用A是我们比较一下
所以当在使用引号时,要注意自己是否引用了变量等
例如在使用一些特殊字符时,双引号就不可以实现
总结:
\ 完全转译
” 完全转译
“”部分转译,对于这四种不能转移 斜杠\ 反引号` 叹号! $不能转,双引号不能用,大家可 以尝试一下,之后我会写一篇博客专门介绍
(3)变量的查看
set 既显示本地变量也显示环境变量
5、环境变量
(1)变量的赋值
(1) vaname=123
export varname
(2)export varname=value
可以直接给便量赋值
(3)declare -x varname=value
(2)变量的引用
同本地变量的用法一样
(3)变量的查看
(1) set 可以查看本地变量和环境变量
(2)env
(3)printenv
在上面的已经看到了env的作用,看一下printenv ,这两种的用法一样
(4)export
(5) declare –x
比较四种用法:
总结:可以看出env 和printenv显示的结果一样,export 和 declare -x 显示结果一样 ,四种结果都会显示出环境变量的数量一样。可以随意选择其中一种使用
(4)变量的销毁
环境变量和本地变量的销毁方式一样,unset varname
在平时的使用变量时,或者在写脚本时,随手写一个命令,释放A变量。毕竟变量的设置也会占用内存,积少成多。
原创文章,作者:guanman,如若转载,请注明出处:http://www.178linux.com/84077