Linux认证 > 综合辅导 > 文章内容

linux从入门到精通(35)

2016-6-24编辑:ljnbset

Shell变量

Shell变量和其他语言的变量含义大同小异,就是可以存放不同的内容,它也为灵活管理Linux系统提供特定参数。一般有两层意思:变量名:使用固定的名称,由系统预设或用户定义;变量值:能够根据用户设置、系统环境变化而变化。

Shell变量的种类:

用户自定义变量:由用户自己定义、修改和使用

环境变量:由系统维护,用于设置用户的Shell工作环境,只有极少数的变量用户可以修改

预定义变量:Bash预定义的特殊变量,不能直接修改

位置变量:通过命令行给程序传递执行参数,如ls -l  /etc/httpd,其中后面两个参数可视为位置参数。

变量的赋值与引用:

定义新的变量名要以英文字母或下划线开头,区分大小写,格式为:变量名=变量值

查看变量的值:echo  $变量名

[root@localhost ~]# DAY=Sunday 
[root@localhost ~]# echo $DAY   ==>通过$符号引用指定名称的变量值
Sunday 
[root@localhost ~]#

(注意:在查看变量时,如果变量名容易和后边的字符串连在一起导致混淆,则应该使用大括号将变量名括起来,使用形式为:${变量名}  ,例如:  若已知变量Var的值为Benet,则执行“echo $Var3.0”命令后将显示结果“.0”而不是“Benet3.0”,因为在该命令中,会将“Var3”当成变量名(默认未定义此变量)。若希望正确显示“Benet3.0”的输出结果,则需要执行“echo ${Var}3.0”)

[root@localhost ~]# Var =Benet
[root@localhost ~]# echo $Var
Benet
[root@localhost ~]# echo $Var3.0
.0
[root@localhost ~]# echo ${Var}3.0
Benet3.0
[root@localhost ~]# 

   从键盘输入内容为变量赋值,格式为:read  [-p  "输入信息"]  变量名

[root@localhost ~]#read var
haha    ==>这里等待输入
[root@localhost ~]#echo $var
haha
[root@localhost ~]#

    在给变量赋值时,使用不同的引号操作的区别:

1)使用双引号时,允许在双引号的范围内使用“$”符号引用其他变量的值(变量引用)

2)使用单引号时,将不允许在单引号的范围内引用其他变量的值,“$”符号或者其他任何符号将作为普通字符看待

 

[root@localhost ~]#name=linuxidc
[root@localhost ~]#echo $name
linuxidc
[root@localhost ~]#myname="$name is me"  ==>这里使用的是双引号
[root@localhost ~]#echo $myname
linuxidc is me   ==>将$name这个变量执行出来了
[root@localhost ~]#myname='$name is me'   ==>这里使用的是单引号
[root@localhost ~]#echo $myname
$name is me   ==>原样显示出来了,$name没有执行
[root@localhost ~]#

 

3)使用反撇号时,允许将执行特定命令的输出结果赋值给变量(命令替换),反撇号中的内容要求是可执行的命令。需要嵌套使用时,可以将反撇号改为 $( ... ) 的形式

     这么说吧,在一串命令中,在`之内的命令会被先执行,然后将其执行出来的结果作为外部的输入信息。

 

[linuxidc@localhost ~]$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/man/man1/crontab.1.gz
.....
[linuxidc@localhost ~]$ ls -l `locate crontab`    ==>先执行locate crontab,再执行ls -l
-rw-r--r-- 1 root root    298 2006-12-18 /etc/anacrontab
-rw-r--r-- 1 root root    255 2006-07-15 /etc/crontab
-rwsr-sr-x 1 root root 315416 2008-07-15 /usr/bin/crontab
-rw-r--r-- 1 root root   1846 2008-07-15 /usr/share/man/man1/crontab.1.gz
.....
[linuxidc@localhost ~]$ 

 

 设置变量的作用范围,格式:export  变量名

 一般情况下,父进程的自定义变量是无法在子进程中使用的,但是通过export将变量变成环境变量后,就能够在子进程下使用了。

 

[root@localhost ~]#name=linuxidc
[root@localhost ~]#echo $name
linuxidc
[root@localhost ~]# export name ==>输出为全局变量
[root@localhost ~]# zsh
[root@localhost]~# echo $name
linuxidc
[root@localhost]~# exit
[root@localhost root]# unset  name==>消除变量内容
[root@localhost root]# echo $name

[root@localhost ~]#

变量还有一个好处,当您经常访问一个目录时,而且这个目录比较长,可以将它付给一个简单的变量,这样进入这个目录时候只需cd  变量就行了。如work="~/temp/2013/test/",则进入这个目录只需cd  work。

数值变量的运算:

之前讲到过可以使用命令bc来打开一个计算器,其实Bash程序并不适合进行强大的数学运算,例如小数或指数运算的,一般只能进行简单的整数运算,若不使用bc,则也可以使用下列格式来进行简单数值计算:

格式:expr  变量1  运算符  变量2  [..运算符  变量n...]

expr命令常用的运算符有:+、-、\*(注意要有\)、/、%

[linuxidc@localhost ~]$ expr  10 * 2
expr :语法错误
[linuxidc@localhost ~]$ expr 10 \* 2
20
[linuxidc@localhost ~]$expr 10 + 2
12
[linuxidc@localhost ~]$

环境变量

   环境变量配置文件:全局配置文件:/etec/profile

          用户配置文件:~/.bash_profile

 查看环境变量:env  

    set    (set命令可以查看所有的Shell变量,其中包括环境变量)

 常见的环境变量:

$USER、$LOGNAME变量表示当前用户的登录名称

$UID变量表示当前用户的UID号

$SHELL变量表示用户使用的登录Shell

$HOME变量表示用户的宿主目录

$PWD变量表示用户当前的工作目录

$PS1和$PS2变量分别代表了当前用户的主提示符(命令行提示符)和辅助提示符(例如,执行at命令后的“>”)

linux从入门到精通(34)

热点推荐

登录注册
触屏版电脑版网站地图