手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

请教哪儿有写unix

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

2>测试两个整数之间关系

  test命令和expr命令相同,也能够把字符转变成整数,然后对其操作。test命令对两个数进行比较,使用的操作符如下:

    int1 -eq int2    两数相等为真
    int1 -ne int2    两数不等为真
    int1 -gt int2    int1大于int2为真
    int1 -ge int2    int1大于等于int2为真
    int1 -lt int2    int1小于int2为真
    int1 -le int2    int1小于等于int2为真

  下面的例子反映了字符串比较和数字比较的不同:

    $str1=1234
    $str2=01234
    $test $str1 = $str2
    $echo $?
    结果显示:1
    $test $str1 -eq $str2
    $echo $?
    结果显示:0

3>有关文档的测试

  使用test进行的第三类测试是测试文档的状态,用户能够测试文档是否存在,是否可写连同其他文档属性。下面是文档测试时使用的选项。注意只有文档存在时,才有可能为真。

  -r file     用户可读为真
  -w file     用户可写为真
  -x file     用户可执行为真
  -f file     文档为正规文档为真
  -d file     文档为目录为真
  -c file     文档为字符特别文档为真
  -b file     文档为块特别文档为真
  -s file     文档大小非0时为真
  -t file     当文档描述符(默认为1)指定的设备为终端时为真
4>复杂的条件测试(and 、or 、not)
  -a         和
  -o        或
  !        非
  就是组合条件了,任何高级语言中都有的(NOT 、AND 、OR),例如:
    $test -r em.null -a -s em.null
    $echo $?
    结果显示:1
    说明了em.null并不是可读并且非空的文档

5>另一种执行test的方法

  bsh中更有另一种执行test命令的方法,就是把测试条件放到一对[ ]中,例如:
    $int1=4
    $[ $int1 -gt 2 ]
    $echo $?
    结果显示:0

要注意在[ 的后面和 ]符号的前面要有一个空格。
  下面我们用test命令写个简单但比较完善的程式:

    #-- 备份程式
  
    #-- 检查参数
    if [ $# -ne 1 ]
    then

      echo "请在程式名后面指出要备份文档所在目录!"
      exit 1
    fi
    #-- 检查目录名是否有效
    if [ !-d "$1" ]
    then
      echo "$1 不是个目录!"
      exit 2
    fi
    cd $1
    ls -a | cpio -o >/dev/mnt0
    if [ $? -eq 0 ]
    then
      rm *
    else
      echo "cpio执行不成功!备份失败..."
      exit 3
    fi

6>空命令

  在Bsh中用 : 代表空命令,就是充个数,什么都不做

7>嵌套if语句和elif结构

  检查条件1
  A:当条件1为真,则执行一部分操作
  B:若条件1为假,检查条件2
    1)若条件2为真,执行另外一部分操作
    2)若条件2为假,检查条件3
    3)若条件3为真,执行其他一部分操作
  语法如下:
    if command
    then
      command
    else
      if command
      then
        command
      else
        if command
        then
          command
        fi
      fi
    fi

8>elif语句

  嵌套if语句有时会给用户带来混乱,特别是什么时候fi语句很难判断。因此Bourne Shell又提供了elif语句。elif是else-if的缩写,他表示是if语句的继续。格式为:

    if command
    then
      command
    elif command
    then
      command
    elif command
    then
      command
    fi

  上面介绍的嵌套if语句和elif语句完成相同的功能,用户能够根据自己的喜好选择一种使用。

9>case语句

  前面说的elif语句替代if-then-else语句,但有时在编程时还会碰到对同一变量进行多次的测试,该情况能够用多个elif语句实现,但更有一种更简单的方法就是用case语句。

  case语句不但取代了多个elif和then语句,还能够用变量值对多个模式进行匹配,当某个模式和变量值匹配后,其后的一系列命令将被执行,下面是case语句使用的语句。

  case value in
   pattem 1)
    command
    command;;
   pattem 2)
    command
    command;;
   ....
   pattem)
    command;
  esac

  case语句只执行其中的一组命令,当变量值和多个模式相匹配时,只有第一个匹配的模式对应的命令被执行。";;"表示该模式对应的命令部分程式。

  通过学习下面的read语句,我们们再举例子说明case语句的用法。

10>read语句

  Shell程式不但能够通过命令行参数得到输入数据,还能够使用read命令提示用户输入数据,其语法格式为:

  read var1 var2... ...varn

当Bsh碰到一个read语句时,在标准输入文档中读取数据直到一个换行符。此时Shell在解释输入行时,不进行文档名或变量的替换,只是简单地删除多余的空格。然后Shell将输入行的第一个字的内容给变量1,第二个给变量2,直到任何变量都赋上值或是输入行为空。若输入行中字的个数超过变量个数,Shell将把输入行中剩余的任何字的内容都赋给最后一个变量。当变量个数多于输入行字的个数时候,多于的变量将赋一个空值。输入行的每一个字是由空格分隔的一个字母和数字组成的字符串。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!