参考:http://cn.linux.vbird.org/linux_basic/0320bash_1.php
shell的变量功能:变量就是以一组文字或符号等,来取代一些配置或者是一串保留的数据!
echo 这个命令来取用变量:echo $PATH,需要在变量名前加$。通过man命令可以查看命令的使用方法例如:man echo
- 变量的配置守则
- 变量与变量内容以一个等号『=』来连结:
- 『myname=VBird』
- 等号两边不能直接接空格符,如下所示为错误:
- 『myname = VBird』或『myname=VBird Tsai』
- 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:
- 『2myname=VBird』
- 变量内容若有空格符可使用双引号『"』或单引号『‘』将变量内容结合起来,但
双引号内的特殊字符如 $ 等,可以保有原本的特性,:『var="lang is $LANG"』则『echo $var』可得『lang is en_US』
单引号内的特殊字符则仅为一般字符 (纯文本),:『var=‘lang is $LANG‘』则『echo $var』可得『lang is $LANG』
8.可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, ‘等)变成一般字符;有点像转义字符
9.在一串命令中,还需要藉由其他的命令提供的信息,可以使用反单引号『`命令`』或 『$(命令)』。特别注意,那个 ` 是键盘上方的数字键 1 左边那个按 键,而不是单引号! 例如想要取得核心版本的配置:
『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』
10.若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容:『PATH="$PATH":/home/bin』
11.若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量:『export PATH』
什么是『子程序』呢?就是说,在我目前这个 shell 的情况下,去激活另一个新的 shell ,新的那个 shell 就是子程序啦!在一般的状态下,父程序的自定义变量是无法在子程序内使用的。但是透过 export 将变量变成环境变量后,就能够在子程序底下应用了!
12.通常大写字符为系统默认变量,自行配置变量可以使用小写字符,方便判断 (纯粹依照使用者兴趣与嗜好) ;
13.取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的配置:『unset myname』
如何能够内核模块目录 :[[email protected] ~]# cd /lib/modules/`uname -r`/kernel
- 先进行反单引号内的动作『uname -r』并得到核心版本为 2.6.18-128.el5
- 将上述的结果带入原命令,故得命令为:『cd /lib/modules/2.6.18-128.el5/kern
例题:
在变量的配置当中,单引号与双引号的用途有何不同?
答:
单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符 ,而不会有特殊符号。我们以底下的例子做说明:假设您定义了一个变量, name=VBird ,现在想以 name 这个变量的内容定义出 myname 显示 VBird its me 这个内容,要如何订定呢?
[[email protected] ~]# name=VBird发现了吗?没错!使用了单引号的时候,那么 $name 将失去原有的变量内容,仅为一般字符的显示型态而已!这里必需要特别小心在意! |
例题:
在命令下达的过程中,反单引号( ` )这个符号代表的意义为何?
答:
在一串命令中,在 ` 之内的命令将会被先运行,而其运行出来的结果将做为外部的输入信息!例如 uname -r 会显示出目前的核心版本,而我们的核心版本在 /lib/modules 里面,因此,你可以先运行 uname -r 找出核心版本,然后再以『 cd 目录』到该目录下,当然也可以运行如同上面范例六的运行内容啰。
另外再举个例子,我们也知道, locate 命令可以列出所有的相关文件档名,但是,如果我想要知道各个文件的权限呢?举例来说,我想要知道每个 crontab 相关档名的权限: [[email protected] ~]# ls -l `locate crontab`如此一来,先以 locate 将文件名数据都列出来,再以 ls 命令来处理的意思啦!瞭了吗? ^_^ |
例题:
若你有一个常去的工作目录名称为:『/cluster/server/work/taiwan_2005/003/』,如何进行该目录的简化?
答:
在一般的情况下,如果你想要进入上述的目录得要『cd /cluster/server/work/taiwan_2005/003/』, 以鸟哥自己的案例来说,鸟哥跑数值模式常常会配置很长的目录名称(避免忘记),但如此一来变换目录就很麻烦。 此时,鸟哥习惯利用底下的方式来降低命令下达错误的问题:
[[email protected] ~]# work="/cluster/server/work/taiwan_2005/003/"未来我想要使用其他目录作为我的模式工作目录时,只要变更 work 这个变量即可!而这个变量又可以在bash 的配置文件中直接指定,那我每次登陆只要运行『 cd $work 』就能够去到数值模式仿真的工作目录了!是否很方便呢? ^_^ |
---恢复内容结束---