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

请教哪儿有写unix

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

#shift上档命令的应用(x_shift2.sh)
if [ $# -eq 0 ]
then
echo "Usage:x_shift2.sh 参数"
exit 1
fi
sum=0
until [ $# -eq 0 ]
do
sum=`expr $sum $1`
shift
done
echo "sum is: $sum"

执行上述程式:

$x_shift2.sh 10 20 15

其显示结果为:

45

  shift命令更有另外一个重要用途,Bsh定义了9个位置变量,从$1到$9,这并不意味着用户在命令行只能使用9个参数,借助shift命令能够访问多于9个的参数。

  Shift命令一次移动参数的个数由其所带的参数指定。例如当shell程式处理完前九个命令行参数后,能够使用shift 9命令把$10移到$1。

  在熟悉了shift命令后,我们一起看看,Bsh程式中很有用的for循环语句,这种循环同上面说的while和until循环不同,for语句中的循环是否执行并不由某个条件的真和假来决定,决定for循环是否继续的条件是参数表中是否更有未处理的参数。

For语句的结构如下:

for variable in arg1 arg2 … argn
do
command
command
… …
done

下面是for循环的简单例子:

for LETTER in a b c d
do
echo $LETTER
done

程式执行结果如下:

a
b
c
d

在上面计算参数和的例子中,我们能够用for循环,实现如下:

#测试 for 程式(x_for.sh)

if [ $# -eq 0 ]
then
   echo "Usage:x_for.sh 参数… …"
   exit 1
fi
sum=0
for I in $*
do
   sum=`expr $sum $I`
done
echo "sum is: $sum"

中断循环指令

  在程式循环语句中,我们有时候希望碰到某中情况时候结束本次循环执行下次循环或结束这个循环,这就涉及到两条语句:continue和break。continue命令可使程式忽略其后循环体中的其他指令,直接进行下次循环,而break命令则立即结束循环,执行循环体后面的的语句。

#测试continue
I=1
while [ $I -lt 10 ]
do
  if [ $I -eq 3 ]
  then
    continue
  fi
  if [ $I -eq 7 ]
  then
    break
  fi
  echo "$I\c"
done

执行上面程式,结果如下:

12456789

和或结构

使用和/或结构有条件的执行命令

  Shell程式中能够使用多种不同的方法完成相同的功能,例如until和while语句就能够完成相同的功能,同样,除了if-then-else结构能够使命令有条件的执行外,$$和||操作符也能完成上述功能。在C语言中这两个操作符分别表示逻辑和和逻辑或操作。在Bourne Shell中,用&&连接两条命令的含义只有前面一条命令成功执行了,后面的命令才会执行。

  &&操作的形式为:

    command && command

  例如语句:

    rm $TEMPDIR/* && echo "Files successfully removed"

  只有rm命令成功执行以后,才会执行echo命令。若用if-then语句实现上述功能,形式为:

    if rm $TEMPDIR/*
    then
      echo "Files successfully removed"
    fi
  相反,用||连接两条命令的含义为只有第一条命令执行失败才执行第二条命令,例如:

    rm $TEMPDIR/* || echo "File were not removed"

  上面语句的等价形式为:

    if rm $TEMPDIR/*
    then
      :
    else
      echo "Files were not removed"
    fi
  这两种操作符能够联合使用,如在下面的命令行中,只有command1和command2执行成功后,command3才会执行:

    command1 && command2 && command3

  下面的命令行表示只有command1成功执行,command2不成功执行时,才会执行command3。

  &&和||操作符能够简化命令条件执行的格式,但一般只用于一条命令的条件执行。假如许多命令都使用这两个操作符,那么整个程式的可读性将变的很差,所以在多条命令的条件执行时,最好采用可读性好的if语句。

函数

  现在我们介绍Shell程式中的函数部分,基本上任何高级语言都支持函数这个东西,能让我们胜好多事情的东西,至少省的频繁的敲击相同的东西,好了come on

Shell程式中的函数

  函数又叫做子程式,能够在程式中的任何地方被调用,其格式如下:

  函数名字()
  {
    command
    ... ...
    command;
  }

  Shell程式的任何地方都能够用命令 "函数名字" 调用,使用函数的好处有两点,一点是使用函数能够把一个复杂的程式化为多个模块,易于管理,符合结构化程式的设计思想,另一个好处是代码的重用。

  Shell函数和Shel程式比较相似,他们的区别在于Shell程式在子Shell中运行,而Shell函数在当前Shell中运行。因此,在当前Shell中能够看到Shell函数对变量的修改。在任何Shell中都能够定义函数,包括交互式Shell。

  例如:

    $dir() {ls -l;}

    结果是我们在$后面打dir,其显示结果同ls -l的作用是相同的。该dir函数将一直保留到用户从系统退出,或执行了如下所示的unset命令:
    $unset dir
    下面的例子说明了函数还能够接受位置参数:

    $dir(){_
    >echo "permission    ln owner   group    file sz last access
    >ls -l $*;
    >}

    运行 dir a* 看产生什么结果

    参数a*传递到dir函数中并且代替了$*

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