Shell变量功能(1)
Shell的变量功能:
所谓变量就是用一个简单的东西代替一个比较复杂的容易变动的数据。
所谓的环境变量也就是在我们正确登陆一个用户名,系统给了我们一个bash的执行程序以便
我们可以真正的经由bash来和系统通信之前,系统需要一些变量来提供它数据的访问(或者是
一些环境的设置参数值,例如是否要显示彩色等。)这些环境变量包括:PATH/HOME/MAIL/SHELL
这里环境变量大写只是为了和自定义变量相区别。
小结:什么是变量?
变量就是以一组文字或者符号等来替代一些设置或者是一串保留的数据。
利用echo查看变量:
echo $variable 查看变量
echo $PATH 以下两个是查看路径
echo ${PATH}
培养自己举一反三的能力:联想到
echo $HOME //看环境住目录eg:/home/xwg
echo $MAIL //邮件路径 eg:/var/mail/xwg或者/var/spool/mail/xwg
修改、设置变量:只需要三部曲
假设myname在bash中是没有被设置的
echo $myname
myname = xwg
echo $myname
xwg //显示信息xwg此时变量myname的内容就带有xwg的这个数据了。
由上面可以知道,在bash中,当一个变量名称尚未被设置时默认的内容为空。
下面是变量设置的规则:
1、变量与变量内容以一个等号“=”连接,
2、等号两边不能直接接空格
3、变量名称只能是英文字母或者数字,但是开头字符不能是数字
4、变量内容若有空格符可以使用双引号或者单引号将变量的内容结合起来,
但是:
双引号内的特殊字符如果$等,可以保持原本的特性
eg:终端内直接键入
var=“lang is $LANG”
echo $var
得到lang is zh_CN.UTF-8
同样的如果lang is $LANG用单引号的话,就只能得到lang is zh_CN.UTF-8
5、可以用转义字符“/”将特殊符号如【[ENTER]、$、/、空格符、!等】
6、??? 用“version=$(uname -r)”查看内核参数
echo $version根本就没有结果???
7、如果该变量为了增加变量内容时,则可以用“$变量名称”或者${变量}累加内容
eg:“PATH="$PATH":/home/bin” //试验过,但是显示说找不到目录
8、如果该变量需要在其他子进程执行,则需要以export来使变量变成环境变量
eg:“export PATH” //不理解?
9、通常大写字符为系统默认变量,自行设置变量可以使用小写字符,方便判断。
10、取消变量的方法使用:
unset+变量名称
eg:取消myname的设置:unset myname
设置变量案例:
1、在PATH这个变量中累加 /home/dmtsai/bin这个目录,介绍三种方法:
PATH=$PATH:/home/dmtsai/bin
PATH="$PATH":/home/dmtsai/bin
PATH=${PATH}:/home/dmtsai/bin
看一眼:
echo $PATH
2、如何让自己设置的变量用到下一个shell中
name=xwg //设置变量
echo $name //显示xwg
bash //进入到所谓的子进程中
echo $name //子进程:再次echo一下,没有刚才设置的内容
exit //离开子进程
export name //
bash //进入子进程
echo $name //子进程:在这里执行,有了
exit
所谓的子进程就是在目前的这个shell的情况下去打开另一个新的shell,新的shell
就是子进程。在一般情况下,父进程的自定义变量是无法通过子进程内使用的。
但是通过export将变量变成环境变量后就能够在子进程下面使用了。
3、如何进入到你目前内核的模块目录:
cd /lib/modules/`uname -r`/kernel
cd /lib/modules/$(uname -r)/kernel
uname -r 可以取得版本的基本信息,用cd命令就能够顺利进入目前内核的驱动程序
所放置的位置。
上面做了两次操作:
第一步是先进行反单引号内的操作uname -r,得到内核版本信息
第二步是将上述的结果带入原来的命令。
此处就可以看到反单引号的威力了,``中的内容会被先执行,上例和下例都能说明:
ls -l `locate crontab` //查看每个crontab相关文件名的权限
如果经常用到一个目录的话比如 cd /home/xwg/accept/unix有两个方法简化你的做法:
法一:
利用别名alias cdd="cd /home/xwg/accept/unix/linux/learn",但是这种方法有一个缺点,
就是能够在其他用户上面使用,换个终端就不能用了
法二:
设置变量,
work="cd /home/xwg/accept/unix/linux/learn"
cd $work //用export可以实现子进程的沿用,上面所述(具体功能尚需探讨)
”version=$(uname -r)“替代”version=`uname -r`“比较好,不容易看错或者打错。