(003)Linux下变量和环境变量

十年运维系列之基础篇 - Linux

作者:曾林 

联系:1494445739@qq.com

网站:www.jplatformx.com

版权:文章未经同意请勿转载


 

一、引言

  变量是任何一种编程语言必不可少的组成部分,用于存放各类数据。脚本语言通常不需要在使用变量之前声明其类型。只需直接赋值就可以了。在Bash中,每一个变量的值都是字符串。无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。有一些特殊的变量会被shell环境和操作系统环境用来存储一些特别的值,这类变量就被称为环境变量。

  变量采用常见的命名方式来进行命名。当一个应用程序执行的时候,它接收一组环境变量。可以使用env命令在终端中查看所有与此终端进程相关的环境变量。对于每个进程,在其运行时的环境变量可以使用下面的命令来查看:

cat /proc/$PID/environ

  其中,将PID设置成相关进程的进程ID(PID总是一个整数)。

  假设有一个叫做mysql的应用程序正在运行。我们可以使用pgrep命令获得mysql的进程ID。如下图:

  那么,我们就可以通过以下的命令来获取与该进程相关的环境变量。执行命令如下图:

  以上命令执行的结果返回一个包含环境变量以及对应变量值的列表。每一个变量以name=value的形式来描述,彼此之间由null字符(\0)分割。这里可以将"\0"用换行“\n”来替代,就可以让输出重新格式化了。

 

二、普通变量和环境变量的操作技巧

1. 获取字符串长度

  可以用下面的方法获得变量值的长度。

length=${#var}

  比如下图命令执行的结果:

 

2. 获取当前使用的bash

  可以使用两种方式来获取当前使用的是哪种shell。命令如下:

echo $SHELL     或    echo $0

  命令执行的结果如下图所示:

 

3. 检查是否为超级用户

  UID是一个重要的环境变量,可以用来检查当前脚本是以超级用户还是以普通用户的身份运行的。例如:

1 #!/bin/bash
2 
3 # foo.sh - test bash variables
4 
5 if [[ $UID != 0 ]]; then
6     echo "Non root user. Please run as root"
7 else
8     echo "Root user"
9 fi

 

三、通过shell进行数学计算 

  无论哪种编程语言都少不了算术操作,Bash shell同样提供了多种此类操作。

  在Bash shell环境中,可以利用let、(())、和[]执行基本的算数操作。而在进行高级操作时,expr和bc这两个工具也会非常有用。

 

1. let命令

  可以用普通的变量赋值方法定义数值,这时,它会被存储为字符串。然而,我们可以用一些方法使它能像数字一样进行处理。

#!/bin/bash

no1=4
no2=5

  let命令可以直接执行基本的算数操作。当使用let时,变量名前并不需要再添加$。例如:

let result=no1*no2
echo $result

  自加和自减操作,例如:

1 let no++
2 let no--

  简写形式,例如:

let no+=6    ==>  let no=no+6
let no-=6    ==>   let no=no-6

 

2. []命令

  操作符[]的使用方法和let命令类似:

no1=2
no2=8
result=$[ no1 * no2 ]

 

3. (())命令

  算术运算也可以使用(()),但使用(())时,变量名之前需要加上$。如下面脚本:

no1=18
result=$((no1 + 50))

 

4. expr命令

  expr同样可以用于基本算术操作,用法如下:

result=`expr 3 + 5`
echo $result

  特别需要注意的是,在操作*操作的时候,由于会引起bash通配符扩展,所以需要用转义字符。

  

  注: 在采用上面的命令的时候,都只能用于整数运算,而不支持浮点数。如果需要算术计算同样支持浮点数的时候,就需要使用bc程序。

 

posted @ 2015-03-30 11:30  jplatformx  阅读(164)  评论(0编辑  收藏  举报