| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux开发区 > SHELL

Bourne Shell及shell编程

时间:2006-06-28 22:35:53  来源:Linux联盟收集  作者:Linux联盟收集
逻辑操作,可以进行and/or,与其他条件联合使用 6w6Linux联盟
  6w6Linux联盟
      a. 测试字符数据: shell变量通常民政部下均作为字符变量 6w6Linux联盟
        str1 = str2     二者相长,相同 6w6Linux联盟
        str1 != str2    不同 6w6Linux联盟
        -n string       string不为空(长度不为零) 6w6Linux联盟
        -z string       string为空 6w6Linux联盟
        string          string不为空 6w6Linux联盟
  6w6Linux联盟
        例: 6w6Linux联盟
                $ str1=abcd     #在含有空格时必须用引号括起来 6w6Linux联盟
                $ test $str1=abcd 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                0 6w6Linux联盟
                $ str1="abcd " 6w6Linux联盟
                $ test $str1=abcd 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                1 6w6Linux联盟
        Note: 在test处理含有空格的变量时最好用引号将变量括起来,否则会出现错误的 6w6Linux联盟
结果, 6w6Linux联盟
              因为shell在处理命令行时将会去掉多余的空格,而用引号括起来则可以防止 6w6Linux联盟
              shell去掉这些空格. 6w6Linux联盟
              例: 6w6Linux联盟
                $ str1="    " 6w6Linux联盟
                $ test $str1 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                1 6w6Linux联盟
                $ test "$str1" 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                0 6w6Linux联盟
                $ test -n $str1 6w6Linux联盟
                test: argument expected 6w6Linux联盟
                $ test -n "$str1" 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                0 6w6Linux联盟
                $ 6w6Linux联盟
  6w6Linux联盟
      b. 整数测试: test与expr相同,可以将字符型变量转换为整数进行操作,expr进行 6w6Linux联盟
         整数的算术运算,而test则进行逻辑运算. 6w6Linux联盟
  6w6Linux联盟
         表达式                 说明 6w6Linux联盟
         --------------------------------------- 6w6Linux联盟
         int1 -eq int2          相等? 6w6Linux联盟
         int1 -ne int2          不等? 6w6Linux联盟
         int1 -gt int2          int1 > int2 ? 6w6Linux联盟
         int1 -ge int2          int1 >= int2 ? 6w6Linux联盟
         int1 -lt int2          int1 < int2 ? 6w6Linux联盟
         int1 -le int2          int1 <= int2 ? 6w6Linux联盟
  6w6Linux联盟
         例: 6w6Linux联盟
                $ int1=1234 6w6Linux联盟
                $ int2=01234 6w6Linux联盟
                $ test $int1 -eq $int2 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                0 6w6Linux联盟
  6w6Linux联盟
      c. 文件测试:检查文件状态如存在及读写权限等 6w6Linux联盟
  6w6Linux联盟
         -r filename     用户对文件filename有读权限? 6w6Linux联盟
         -w filename     用户对文件filename有写权限? 6w6Linux联盟
         -x filename     用户对文件filename有可执行权限? 6w6Linux联盟
         -f filename     文件filename为普通文件? 6w6Linux联盟
         -d filename     文件filename为目录? 6w6Linux联盟
         -c filename     文件filename为字符设备文件? 6w6Linux联盟
         -b filename     文件filename为块设备文件? 6w6Linux联盟
         -s filename     文件filename大小不为零? 6w6Linux联盟
         -t fnumb        与文件描述符fnumb(默认值为1)相关的设备是一个终端设备? 6w6Linux联盟
  6w6Linux联盟
      d. 测试条件之否定,使用! 6w6Linux联盟
        例: 6w6Linux联盟
                $ cat /dev/null > empty 6w6Linux联盟
                $ test -r empty 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                0 6w6Linux联盟
                $ test -s empty 6w6Linux联盟
                1 6w6Linux联盟
                $ test ! -s empty 6w6Linux联盟
                $ echo $? 6w6Linux联盟
                0 6w6Linux联盟
      e. 测试条件之逻辑运算 6w6Linux联盟
        -a      And 6w6Linux联盟
        -o      Or 6w6Linux联盟
  6w6Linux联盟
        例: $ test -r empty -a -s empty 6w6Linux联盟
            $ echo $? 6w6Linux联盟
            1 6w6Linux联盟
      f. 进行test测试的标准方法 6w6Linux联盟
         因为test命令在 shell编程中占有很重要的地位,为了使shell能同其他编程语言 6w6Linux联盟
一样 6w6Linux联盟
         便于阅读和组织, Bourne Shell在使用test测试时使用了另一种方法:用方括号将 6w6Linux联盟
整个 6w6Linux联盟
         test测试括起来: 6w6Linux联盟
  6w6Linux联盟
         $ int1=4 6w6Linux联盟
         $ [ $int1 -gt 2 ] 6w6Linux联盟
         $ echo $? 6w6Linux联盟
         0 6w6Linux联盟
  6w6Linux联盟
         例: 重写unload程序,使用test测试 6w6Linux联盟
         #!/bin/sh 6w6Linux联盟
         #unload - program to backup and remove files 6w6Linux联盟
         #syntax: unload directory 6w6Linux联盟
  6w6Linux联盟
         #check arguments 6w6Linux联盟
         if [ $# -ne 1 ] 6w6Linux联盟
         then 6w6Linux联盟
                echo "usage: $0 directory" 6w6Linux联盟
                exit 1 6w6Linux联盟
         fi 6w6Linux联盟
  6w6Linux联盟
         #check for valid directory name 6w6Linux联盟
        
 3/12   |‹ ‹‹ 1 2 3 4 5 6 ›› ›|

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
    无相关信息
栏目更新
栏目热门