玩转变量与环境变量

 返回主页面

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

    $ pgrep gedit
    12501
那么,你就可以通过以下命令获得与该进程相关的环境变量:

$ cat /proc/12501/environ GDM_KEYBOARD_LAYOUT=usGNOME_KEYRING_PID=1560USER=slynuxHOME=/home/slynux

 

上面的命令返回一个包含环境变量以及对应变量值的列表。每一个变量以name=value的形 式来描述,彼此之间由null字符(\0)分隔。如果你将\0替换成\n,那么就可以将输出重新格式 化,使得每一行显示一组“变量=值”。替换可以使用tr命令来实现:

    $ cat /proc/12501/environ  | tr '\0' '\n'

var=value var是变量名,value是赋给变量的值。如果value不包含任何空白字符(例如空格),那么

它就不需要使用引号进行引用,否则必须使用单引号或双引号。

注意,var = value不同于var=value。把var=value写成var = value是一个常见的错误, 但前者是赋值操作,后者则是相等操作。

 

 

#!/bin/bash #文件名:variables.sh

fruit=apple
count=5

echo "We have $count ${fruit}(s)"

 

 HTTP_PROXY=192.168.1.23:3128
    export HTTP_PROXY

export命令用来设置环境变量。至此之后,从当前shell脚本执行的任何应用程序都会继承 这个变量。我们可以按照自己的需要,在执行的应用程序或者shell脚本中导出特定的变量。在默 认情况下,有很多标准环境变量可供shell使用。

PATH就是其中之一。通常,变量PATH包含:

$ echo $PATH /home/slynux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr /games

在给出所要执行的命令后,shell会自动在PATH环境变量所包含的目录列表中(各目录路径之 间以冒号分隔)查找对应的可执行文件。PATH通常定义在/etc/environment/etc/profile~/.bashrc 中。如果需要在PATH中添加一条新路径,可以使用:

    export PATH="$PATH:/home/user/bin"

也可以使用

    $ PATH="$PATH:/home/user/bin"
    $ export PATH

$ echo $PATH /home/slynux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr /games:/home/user/bin

这样,我们就将/home/user/bin添加到了PATH中。

 

$(#变量) 获取变量的内容的长度

echo $SHELL获知当前使用的是哪种shell:

 

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

 

If [ $UID -ne 0 ]; then
        echo Non root user. Please run as root.
    else
        echo Root user

fi

 

root用户的UID0

-eq 等于,如:if ["$a" -eq "$b" ]
-ne 不等于,如:if ["$a" -ne "$b" ]
-gt 大于,如:if ["$a" -gt "$b" ]
-ge 大于等于,如:if ["$a" -ge "$b" ]
-lt 小于,如:if ["$a" -lt "$b" ]
-le 小于等于,如:if ["$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))

另外:$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.

 

 

 

 

 

 

 

 


 

posted @ 2018-08-12 23:31  yunchong1019  阅读(172)  评论(0编辑  收藏  举报