Chinaunix首页 | 论坛 | 博客
  • 博客访问: 283599
  • 博文数量: 70
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 531
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-12 20:22
个人简介

1.01^365=37.8 0.99^365=0.03

文章分类

全部博文(70)

文章存档

2017年(9)

2016年(4)

2015年(14)

2014年(43)

我的朋友

分类: 其他UNIX

2014-02-26 22:50:24

shell中的变量一般是以字母或者下划线开头,后面可以跟任意长度的字符,数字或者下划线。例如,下面一个shell变量的定义和赋值:
$ name=mingqi   #分配变量
$ echo $name    #打印变量值
输出:mingqi
由以上例子可以看出变量的赋值方式为:先写变量名称,紧接着是赋值符号,最后是新值。赋值号两边没有任何空格。当想取shell变量的值时,需要在变量名前加上$字符,当所赋的值中间含有空格时,要加上引号。例如:
first=kou midd=ming last=qi
fullname=“$first $midd $last”
输出:kou ming qi
full=“kou ming qi”
echo $full 
输出: kou ming qi


3>Bsh的变量

  前面我们在多个地方引用了变量,当Shell遇到一个"$"符时(没有被引用或逃逸),它将认为其后为一变量。不论该变量是环境变量还是用户自定义的 变量,在命令行中变量名要被变量值替换。例如命令:ls
$HOME将列出变量HOME对应目录下的文件。
用户可以在命令行中的任何地方进行变量替换。包括命令名本身,例如:

    $dir=ls
    $$dir f*

  将列出以f开头的文件。

  现在详细的介绍下Bsh的变量。Bsh中有四类变量:用户定义的变量、位置变量(shell参数)、预定义变量及环境变量。

  用户定义的变量:

  用户定义的变量由字母和下划线组成,并且变量名的第一个字符不能为数字(0~9)。与其他UNIX名字一样,变量名是大小写敏感的。用户可以在命令行 上用"="给变量赋值,例如:

    $NAME=ice_walk

  给变量NAME赋值为ice_walk,在应用变量NAME的时候,在NAME前加"$"即可,前面已说,不再废话(别说我废话多,关键是没当过老 师)。可以用变量和其他字符组成新的字,例如:

    $SUN=sun
    $echo ${SUN}day

  在应用shell变量时候,可以在变量名字两边$后面加上{},以更加清楚的显示给shell,哪个是真正的变量,以实现字符串的合并等功能。
 
  结果显示:sunday(注意不能echo
$SUNday,因为SUNday变量没定义,读者试下执行结果)
用户也可以在命令行上同时对多个变量赋值,赋值语句之间用空格分开:

    $X=x Y=y

    注意变量赋值是从右到左进行的

    $X=$Y Y=y
    X的值是y
    $X=z Y=$Z

    Y的值是空(变量未赋值时,shell不报错,而是赋值为空)

  用户可以使用"unset <变量>"命令清除给变量赋的值

用户使用变量时要在其前面加一"$"符,使变量名被变量值所替换。Bsh可以进行变量的条件替换,即只有某种条件发生时才进行替换。替换条件放在一对大括 号{}中,如:

    ${variable: -value}
variable是一变量值,value是变量替换使用的默认值

    $echo Hello $UNAME
    结果显示:Hello
    $echo Hello ${UNAME: -there}
    结果显示:Hello there
    $echo $UNAME
    结果显示: (空)
    $UNAME=John
    $echo Hello ${UNAME: -there}
    结果显示:Hello John

  可以看出,变量替换时将使用命令行中定义的默认值,但变量的值并没有因此而改变。另外一种替换的方法是不但使用默认值进行替换,而且将默认值赋给该变 量。其形式如下:

    ${variable:=value}

  该形式在变量替换后同时把值value符给变量variable。

    $echo Hello $UNAME
    结果显示:Hello
    $echo Hello ${UNAME:=there}
    结果显示:Hello there
    $echo $UNAME
    结果显示:there
    $UNAME=John
    $echo Hello ${UNAME:-there}
    结果显示:Hello John

  变量替换的值也可以是` `括起来的命令:

    $USERDIR={$Mydir: -`pwd`}

  第三种变量的替换方法是只有当变量已赋值时才用指定值替换形式:

    ${variable: +value}

    只有变量variable已赋值时,其值才用value替换,否则不进行任何替换,例如:

    $ERROPT=A
    $echo ${ERROPT: +"Error tracking is acitive"}
    结果显示:Error tracking is acitive
    $ERROPT=
    $echo ${ERROPT: +"Error tracking is acitive"}
    结果显示: (空)

  我们还可以使用错误检查的条件进行变量替换:

    ${variable:?message}

当变量variable已设置时,正常替换。否则消息message将送到标准错误输出(若此替换出现在shell程序中,那么该程序将终止)。 例如:

    $UNAME=
    $echo $ {UNAME:?"UNAME HAS NOT BEEN SET"}
    结果显示:UNAME HAS NOT BEEN SET

    $UNAME=Stephanie
    $echo $ {UNAME:?"UNAME HAS NOT BEEN SET"}

    结果显示:Stephanie
    当没有指定message时,shell将显示一条默认的消息,例如:

    $UNAME=
    $echo $ {UNAME:?}
    结果显示:sh:UNAME:parameter null or not set

简单的echo输出
echo的任务就是产生输出,可以用来提示用户,或是用来产生数据供进一步处理。echp的一个重要参数就是 -n,它会省略结尾的换行号。例如:
$ echo -n "Enter your name:"
Enter your name:_ 
阅读(1108) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~