龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

shell简介入门之bash编程之变量

时间:2011-03-20 22:37来源:未知 作者:admin 点击:
分享到:
Bourne Shell的变量格式只有字符串变量,所以要使用数值运算则必须靠外部命令达到目的目 的。它的变量种类有下列几种。 A::用户变量:这是最常用的变量,我们可以用任何不包含空白

  Bourne Shell的变量格式只有字符串变量,所以要使用数值运算则必须靠外部命令达到目的目

  的。它的变量种类有下列几种。

  A::用户变量:这是最常用的变量,我们可以用任何不包含空白字符的字符串来当作变量域名。设

  定变量值时则用下列方式:

    var=string

  调用变量时则在变量域名前加上一"$"号。

  例如下面的test1.sh程序:

  #!/bin/bash

  name=tom

  echo name

  echo $name

  运行结果如下:

  name

  tom

  B::系统变量(环境变量):和用户变量相似,只不过此种变量会将其值传给其所执行的命令。

  要半一用户变量设定为系统变量,只要加上:

  export var

  以下是用户一进入系统之后就已设定好的系统变量:

  $HOME     用户自己的目录

  $PATH     执行命令时所搜寻的目录

  $TZ      时区

  $MAILCHECK  每隔多少秒检查是否有新的信件

  $PS1     在命令行时的提示号

  $PS2     当命令尚未打完时,Shell要求输入提示号

  $MANPATH   man指令的搜寻路径

  C::只读的用户变量:和用户变量相似,只不过这些变量不能被改变。要将用户变量设成只读的。

  例如:

  readonly var

   而若只打readonly则会列出所有只读的变量。应注意,系统变量不可以设定成只读的。例如:

  #!/bin/bash

  name=tom

  readonly name

  echo $name

  name=john

  readonly

  运行结果如下:

  tom

  ./test2.sh:name:readonly variable

  declare -ar BASH_VERSINFO=`([0]="2" [1]="03" [2]="0" [3]="2" [4]="RELEASE"

  [5]="i691-pc-linux-gnu")`

  declare -ir EUID="501"

  declare -ar GROUPS=`()`

  declare -ir PPID="1190"

  declare -r SHELLOPTS="braceexpand:hashall:interactive-comments"

  declare -ir UID="501"

  declare -r name="tom"

  D::特殊变量:有些变量 是一开始执行脚本时就会设定,并且不加以修改,但我们不叫它只读的

  系统变量,而叫它特殊变量(有些书会叫它只读的系统变量),因为这些变量是一执行程序时就

  有了,况且用户无法将一般的系统变量设定成只读的。以下是一些特殊变量:

  $0 这个程序的执行名字

  $n  这个程序的第n个参数值,n=1...9

  $*  这个程序的所有参数

  $# 这个程序的参数个数

  $$ 这个程序的PID

  $! 执行上一个背景指令的PID

  $? 上一个指令的返回值

  当执行这个程序时的参数数目超过9个时,我们可以使用shift命令将参数往前移一格,如此即可

  使用第10个以后的参数。除此之外,可以用set命令$n和$*,方法如下:

  set string

  这时$*的值即为string,而分解后则会放入$n。如果set命令后面没有参数,则会列出所有已以设

  定的变量以及其值:

  文件名: ex1 参数:this is a test

  例如:

  #!/bin/bash

  echo Filename:$0

  echo Arguments:$*

  echo No. of args.:$#

  echo 2nd arg.:$2

  shift

  echo No.of args.:$#

  echo 2nd arg.:$2

  set hello,everyone

  echo Arguments:$*

  echo 2nd arg.:$2

  运行结果如下:

  Filename: x1

  arguments: his is a test

  No. of args.: 4

  2nd arg.: is

  No. of args.:3

  2nd arg.: a

  Arguments: hello,everyone

  2nd arg.:everyone

  值得一提的是,当你想从键盘输入一变量值时,你可以使用下面的命令:

  read var1 var2......

  这时read 会将一个字分给一个变量。如果输入的字比变量还多,最后一个变量会将剩下的字当成

  其值。如果输入 的字比变量还少,则后面的变量会设成空字符串。如果需要处理数值运算,我

  们可以使用expr命令。

  

  

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接