文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux-shell

linux-shell

时间:2008-11-12  来源:xxfihm

1 保留字符及其含义 <STYLE>!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </STYLE>

 $      shell变量名的开始,如$var

   |    管道,将标准输出转到下一个命令的标准输入

   #    注释开始

   &    在后台执行一个进程

   ?   匹配一个字符

   *    匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)

   $-   使用set及执行时传递给shell的标志位

   $!   最后一个子进程的进程号

   $#   传递给shell script的参数个数

   $*   传递给shell script的参数

   $@   所有参数,个别的用双引号括起来

   $?   上一个命令的返回代码

   $0   当前shell的名字

   $n    (n:1-) 位置参数

   $$   进程标识号(Process Identifier Number, PID)

   >file        输出重定向

   <file        输入重定向

   `command`    命令替换,如    filename=`basename /usr/local/bin/tcsh`

   >>fiile      输出重定向,append

 

2 转义符及单引号:

        $echo "$HOME $PATH"

        /home/hbwork /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:


        $echo '$HOME $PATH'

        $HOME $PATH


        $echo \$HOME $PATH

        $HOME /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/hbw

ork/bin

 

    其他:

        $dir=ls

        $$dir

        $alias dir ls

        $dir

 

        ls > filelist

        ls >> filelist

        wc -l < filelist

        wc -l filelist

        sleep 5; echo 5 seconds reaches; ls -l

        ps ax |egrep inetd

        find / -name core -exec rm {} \; &

        filename=`date "+%Y%m%d"`.log


3 数据测试

<LINK href="file:///C:%5CDOCUME%7E1%5Cxiaoxf%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" rel=File-List> <STYLE> </STYLE>

 a. 测试字符数据: shell变量通常民政部下均作为字符变量

        str1 = str2     二者相长,相同

        str1 != str2    不同

        -n string       string不为空(长度不为零)

        -z string       string为空

        string          string不为空

 

        例:

                $ str1=abcd     #在含有空格时必须用引号括起来

                $ test $str1=abcd

                $ echo $?

                0

                $ str1="abcd "

                $ test $str1=abcd

                $ echo $?

                1

<LINK href="file:///C:%5CDOCUME%7E1%5Cxiaoxf%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" rel=File-List> <STYLE> </STYLE>

 b. 整数测试: test与expr相同,可以将字符型变量转换为整数进行操作,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 ?

 

         例:

                $ int1=1234

                $ int2=01234

                $ test $int1 -eq $int2

                $ echo $?

                0

 

      c. 文件测试:检查文件状态如存在及读写权限等

 

         -r filename     用户对文件filename有读权限?

         -w filename     用户对文件filename有写权限?

         -x filename     用户对文件filename有可执行权限?

         -f filename     文件filename为普通文件?

         -d filename     文件filename为目录?

         -c filename     文件filename为字符设备文件?

         -b filename     文件filename为块设备文件?

         -s filename     文件filename大小不为零?

         -t fnumb        与文件描述符fnumb(默认值为1)相关的设备是一个终端设备?

 

      d. 测试条件之否定,使用!

        例:

                $ cat /dev/null > empty

                $ test -r empty

                $ echo $?

                0

                $ test -s empty

                1

                $ test ! -s empty

                $ echo $?

                0

      e. 测试条件之逻辑运算

        -a      And

        -o      Or

 

        例: $ test -r empty -a -s empty

            $ echo $?

            1

      f. 进行test测试的标准方法

         因为test命令在 shell编程中占有很重要的地位,为了使shell能同其他编程语言

一样便于阅读和组织, Bourne Shell在使用test测试时使用了另一种方法:用方括号将

整个test测试括起来:

 

         $ int1=4

         $ [ $int1 -gt 2 ]

         $ echo $?

         0

 

         例: 重写unload程序,使用test测试

         #!/bin/sh

         #unload - program to backup and remove files

         #syntax: unload directory

 

         #check arguments

         if [ $# -ne 1 ]

         then

                echo "usage: $0 directory"

                exit 1

         fi

 

         #check for valid directory name

         if [ ! -d "$1" ]

         then

                echo "$1 is not a directory"

                exit 2

         fi

 

         cd $1

 

         ls -a | cpio -o > /dev/rmt/0h

 

         if [ $? -eq 0 ]

         then

                rm -rf *

         else

                echo "A problem has occured in creating backup"

                echo "The directory will not be ereased"

                echo "Please check the backup device"

                exit 3

         fi

         # end of unload


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

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载