Chinaunix首页 | 论坛 | 博客
  • 博客访问: 892315
  • 博文数量: 113
  • 博客积分: 3160
  • 博客等级: 少校
  • 技术积分: 1801
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-19 10:09
文章分类

全部博文(113)

分类: Python/Ruby

2012-06-05 21:57:32

 

4shell内部命令

 

 

shell脚本程序可以执行两类命令,一类是可以在命令行提示符中执行的普通命令,也称为外部命令。另外一类是内部命令。内部命令通过shell内部实现,它们不能被外部程序调用。

 

 

1break命令

 

break命令能够跳出for,whileuntil循环。你可一在break后面加上数字表明要跳出几层,默认为一层。

 

实例:

#!/bin/sh

echo "Testing break ...."

var=1

while : ; do

      echo "Now var is $var"

      

      if [ "$var" -gt 5 ] ; then

        echo "exec break !"

 break

      fi

      var=$(($var + 1))

done

exit 0

 

 

测试结果:

 

 

lishuo@lishuo-Rev-1-0:~/桌面$ ./a

Testing break ....

Now var is 1

Now var is 2

Now var is 3

Now var is 4

Now var is 5

Now var is 6

exec break !

 

 

2:命令

 

冒号(:)命令十一个空命令。它也会被当作true来简化条件逻辑。

在一些老的shell脚本中,:有的时候会被用作注释,等同与#

 

 

实例

 

#!/bin/sh

echo "Testing : ...."

: This is a comment !

# This is a comment !

echo "Test is ended !"

 

 

测试结果:

 

lishuo@lishuo-Rev-1-0:~/桌面$./a

Testing : ....

Test is ended !

 

 

3continue命令

 

该命令非常类似与C语言里面的continue关键字,这个命令是for,whileuntil循环跳到下一次循环继续执行。

 

 

实例:

 

#!/bin/sh

echo "Test continue ..."

rm -rf x*

touch x1

touch x2

mkdir x3

touch x4

for file in x* ; do

    if [ -f "$file" ] ; then

echo "checking $file ... , it's a file !"

continue

    fi

    echo "The dirctory is $file"

done

rm -rf x*

exit 0

 

 

测试结果:

 

lishuo@lishuo-Rev-1-0:~/桌面$ ./a

Test continue ...

checking x1 ... , it's a file !

checking x2 ... , it's a file !

The dirctory is x3

checking x4 ... , it's a file !

 

 

4echo命令

 

 

echo相当与C语言里面的printf,当然shell里面也有printf,它的主要作用就是显示shell脚本。

 

echo -n "hello world"    #它会去掉换行符

echo -e "hello world\c"  #激活转义字符

 

 

5eval命令

 

eval允许你对参数进行求值,相当与在参数前面再加上一个$

 

 

6exec命令

 

它的典型用法就是将当前shell替换为一个不同的程序,exec后面的代码都不会再被执行,因为执行者个脚本的程序已经不存在了。

 

 

实例:

 

#!/bin/sh

echo "Testing exec ..."

exec echo "Test "

echo "This command is not executable !"

exit 0

 

 

测试结果:

 

lishuo@lishuo-Rev-1-0:~/桌面$./a

Testing exec ...

Test 

 

 

7:exit n命令

 

exit命令使脚本程序以退出码n结束运行。在shell中,退出码0表示成功,退出码1-255是脚本程序使用的错误代码。

 

 

8export命令

 

 

它将参数导出到子shell中,并使之在子shell中可用,这类似与C语言的globalextern

 

 

实例:

 

#!/bin/sh

# This is shell-script a

echo "$foo"

echo "$bar"

exit 0

#!/bin/sh

# This is shell-script b

foo="This variable will noe be used in a !"

export bar="This var is oppsite to foo !"

./a

exit 0

 

 

测试结果:

 

lishuo@lishuo-Rev-1-0:~/桌面$ ./b

This var is oppsite to foo !

 

 

 

10expr命令

 

expr命令将它的参数作为一个表达式来求值,和$(())同义。

 

 

11return命令

 

return的作用是使函数返回。如果return命令没有指定参数,return会返回最后一条命令的退出码。

 

 

12shift命令

 

shift命令把所有的额参数左移一个位置,使得$2变成$1...,其中$0会保持不变。

 

 

实例:

 

#!/bin/sh

while [ "$1" != "" ] ;do

    echo "$1"

    shift

done

exit 0

 

 

测试结果:

 

 

lishuo@lishuo-Rev-1-0:~/桌面$ ./a li chen zhang wang

li

chen

zhang

wang

 

 

13trap命令

 

 

trap命令用于指定在接收到信号将要采取的行动,trap的一种常见用途就是在脚本程序被终端完成清理工

作。

 

 

trap命令的参数分为两部分,前一部分是接收到指定信号将要采取的行动,后一部分是要处理的信号。

 

 

语法格式:

 

trap command signal

 

command:指接收到信号之后执行的命令

 

signal:信号可以使名字或者数字,shell中总是用数字来表示,可以使用trap -l 来查看信号编号及其关联的名称,在使用信号名的时候要省略SIG前缀。

 

 

下面是所有的信号:

 1) SIGHUP  2) SIGINT  3) SIGQUIT  4) SIGILL  5) SIGTRAP

 6) SIGABRT  7) SIGBUS  8) SIGFPE  9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

 

 

 

 

实例:

 

 

#!/bin/sh

echo "Testing SIG ..."

while : ; do

    sleep 1 # delay one second per time

    trap echo "Test ended !" INT  # You can interrupt it by entering Ctrl+c

    echo "Testing...,Please enter Ctrl+c to interrupt "

done

exit 0

 

 

测试结果:

 

lishuo@lishuo-Rev-1-0:~/桌面$ ./a

Testing SIG ...

trap: Test ended !: bad trap

Testing...,Please enter Ctrl+c to interrupt 

trap: Test ended !: bad trap

Testing...,Please enter Ctrl+c to interrupt 

trap: Test ended !: bad trap

Testing...,Please enter Ctrl+c to interrupt 

trap: Test ended !: bad trap

Testing...,Please enter Ctrl+c to interrupt 

 

 

14:set命令

 

set命令 用来初始化命令行参数变量,塔克一把一个或者多个参数付赋给位置参数,位置参数为$1,$2...

 

 

实例:

 

 

#!/bin/sh

set li chen wang  

echo "$1"

echo "$2"

echo "$3"

exit 0

 

 

测试结果:

 

 

lishuo@lishuo-Rev-1-0:~/桌面$ ./a

li

chen

wang

阅读(2141) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~