文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SHELL 学习笔记6 --环境变量和shell变量

SHELL 学习笔记6 --环境变量和shell变量

时间:2009-03-03  来源:gezn

  环境和shell变量

1.       四种shell变量

1)  本地变量

2)  环境变量

还有两种变量被认为是特殊变量(只读)

3)  位置变量

4)  特定参数变量

2.       本地变量

1)  在用户现在的shell生命期的脚本中使用,如果在shell中启动另一个进程或退出,此值将失效。

2)  设置变量;variable-name=value

Eg:name=gezn;echo $name //定义一个变量name,然后打印该变量,将输出gezn

3)  显示变量:echo $variable-name或echo $(variable-name)

4)  清除变量:unset variable-name    eg:unset name; echo $name//清除了变量name,echo的输出为空白

5)  显示所有本地shell变量:set

3.       测试本地变量是否已设置

1)$(var:-value):如果变量var未定义,返回一个默认值。

如果var存在且非空,则表达式${var:-value}的值为$var,如果var未定义,则表达式值${var:-value}为value

Eg: name1=”gezn”;name2=${name1:-no name};echo $name1 $name2 //将打印gezn gezn

   Unset name1;name2=${name1:-no name}; echo $name1 $name2//将打印no name

1)      ${var:=value}:如果变量var未定义,设置var的默认值为value。

如果var存在且非空,则${var:=value}的值为$var;如果var为空或未定义,则var被赋值value且表达式值为value

Eg; name1=”gezn”;name2=${name1;=no name};echo $name1 $name2//将打印gezn gezn

Unset name1;name2=${name1:=no name}; echo $name1 $name2//将打印no name no name

 

 

3) ${var:?mesg}:捕获未定义变量导致的错误。

如果var存在且非空,则${var:?value}的值为$var;如果var为空或未定义,则打印mesg并终止脚本

Eg: name1=”gezn”;name2=${name1:?error,novalue};echo $name1 $name2//将打印gezn gezn

Unset name1; name2=${name1:?error,novalue};echo $name1 $name2//将打印-bash:name1:error,no value

Unset name1;name2=${name1:?error, no value};echo $name1

//将打印 –bash:name1: error,novalue

Unset name1;name2=${name1:?error,no value};echo $name2

//将打印 –bash:name1;error, no value

4)${var:+mesg} :测试一个变量的存在性.

如果var存在且非空,则${var:+mesg}的返回值为mesg;如果var为空或未定义则返回null

Eg:

name1=”gezn”;name2=${name1:+value ok};echo $name1 $name2//将打印gezn value ok

Unset name1;name2=${name1: +value ok }; echo $name1 $name2//将打印null null(空行)

2)  设置只读变量

Varname=var; readonly varname

查看所有只读变量  readonly –p

5.环境变量

1) 登录进程成为父进程,shell中执行的用户进程均称为子进程。环境变量可用于所有子进程,着包括编辑器、脚本和应用。环境变量最好在profile文件中定义。习惯上,所有环境变量均应该大写

2)设置环境变量:AENAME=value;export VARNAME

3)显示环境变量; echo $VARNAME

4) 查看所有的环境变量:env

5)清除环境变量:unset VARNAME

6.SHELL预留的环境变量名

每一种shell有些预留大的环境变量名,这些变量名不能用作其他用途。Eg:Bourne Shell的环境变量有HOME,PATH,LANG,PED,PS1,EDITOR….

7.export命令

1) export varname命令可以把变量varname输出到子进程中,如果在子进程中修改了变量varname的值,退出子进程后在子进程中被赋的值将不会传回到父进程。

2)不可以将其变量从子进程到处父进程,然而通过重定向就可以做到这一点

8.位置参数变量

位置变量的数目可以任意多,但一般只有$0-$9可以被访问,都用于脚本中。

$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 ($0 的值为脚本名)

Eg: service httpd status //对于脚本/sbin/service来说,$0的值为service,$1的值为httpd,

               //$2的值为status。可以在service脚本中使用这些变量来传递参数值

1.       特定参数变量(7个)

$#:传递到脚本的参数的个数。

$*:以一个单字符串显示所有向脚本传递的参数。$*等价与“$1 $2 $3…$n”

$$: 脚本运行的当前ID号;

$!:最后一个后台运行的进程的进程ID号;

$@:与$*类似,但是使用时加引号,并在引号汇总返回每个参数(返回一个参数列表)。$*等价于“$1” “$2”…“$n”

$-:显示shell使用的当前选项。

$?:显示前面最后一个命令的退出状态。0表示没错误,其他任何值表明有错误。

2.       退出状态

1)   $?可以在任何命令或脚本中返回此变量以获得返回信息。检验脚本退出状态时,最好将返回值赋值给一个有意义的名字的变量,这样可以增加脚本的可读性。

2)   举例:cp ok.txt /usr/local/app/def>/dev/null2>&1

          cp_status=$?                 //保存上一条命令(cp)的退出状态

          echo $cp_status                   //打印保存的状态值

-------------------------------------------------------------------------------------------------

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载