首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 开发>文章内容
Linux程式设计.Shell Script(bash)(5,6)
来源:www.unix5.com 作者:riechelr_hl 发布时间:2007-05-24  

: 控制圈for

演示了几个简单的Shell Script,相信您应该对Shell Script有点概念了。现在我们开始来仔细研究一些较高等的Shell Script写作。一些进一步的说明,例如"$"、">"、"<"、">>"、"1>"、"2>"符号的使用,会在稍後解释。 

--------------------------------------------------------------------------------

for name [ in word; ] do list ; done
控制圈。 
word是一序列的字,for会将word中的个别字展开,然後设定到name上面。list是一序列的工作。如果[in word;]省略掉,那麽name将会被设定为Script後面所加的参数。 


--------------------------------------------------------------------------------

例一: 
#!/bin/sh 

for i in a b c d e f ; do 
    echo $i 
done 

它将会显示出a到f。 



--------------------------------------------------------------------------------

例二: 另一种用法,A-Z
#!/bin/sh 
WORD="a b c d e f g h i j l m n o p q r s t u v w x y z" 

for i in $WORD ; do 
  echo $i 
done 

这个Script将会显示a到z。 



--------------------------------------------------------------------------------

例三 : 修改副档名
如果您有许多的.txt档想要改名成.doc档,您不需要一个一个来。 
#!/bin/sh 

FILES=`ls /txt/*.txt` 

for txt in $FILES ; do 
  doc=`echo $txt | sed "s/.txt/.doc/"` 
  mv $txt $doc 
done 

这样可以将*.txt档修改成*.doc档。 



--------------------------------------------------------------------------------

例四 : meow
#!/bin/sh 
# Filename : meow 
for i ; do 
    cat $i 
done 

当您输入"meow file1 file2 ..."时,其作用就跟"cat file1 file2 ..."一样。 



--------------------------------------------------------------------------------

例五 : listbin 
#!/bin/sh 
# Filename : listbin 

for i in /bin/* ; do 
    echo $i 
done 

当您输入"listbin"时,其作用就跟"ls /bin/*"一样。 

-------------------------------------------------------------------------------

例六 : /etc/rc.d/rc 
拿一个实际的例来说,Red Hat的/etc/rc.d/rc的启动程式中的一个片断。 

for i in /etc/rc.d/rc$runlevel.d/S*; do 
    # Check if the script is there. 
    [ ! -f $i ] && continue 

    # Check if the subsystem is already up. 
    subsys=${i#/etc/rc.d/rc$runlevel.d/S??} 
    [ -f /var/lock/subsys/$subsys ] || \ 
    [ -f /var/lock/subsys/${subsys}.init ] && continue 

    # Bring the subsystem up. 
     $i start 
done

六. 流程控制case

case word in [ pattern [ | pattern ] ... ) list ;; ] ... esac
case/esac的标准用法大致如下: 
case $arg in 
    pattern | sample) # arg in pattern or sample 
    ;; 
    pattern1) # arg in pattern1 
    ;; 
    *) #default 
    ;; 
esac 
arg是您所引入的参数,如果arg内容符合pattern项目的话,那麽便会执行pattern以下的程式码,而该段程式码则以两个分号";;"做结尾。 

可以注意到"case"及"esac"是对称的,如果记不起来的话,把"case"颠倒过来即可。 

共2页: 上一页 1 [2] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·嵌入式Linux系统下图形库讲解及
·Qt/Embedded在嵌入式Linux中的应
·Linux系统环境下的Socket编程详
·在 Fedora Core 5 上体验 Aiglx
·使用 Linux 系统调用的内核命令
·Linux 2.6.11内核文件IO系统调用
·在Linux中创建静态库和动态库
·嵌入式Linux:uClinux操作系统移
·Linux操作系统下的多进程编程(
·嵌入式系统 Boot Loader 技术内
·Linux操作系统的源代码目录树结
·Linux用户态与内核态的交互讲解
  相关文章
·Linux程式设计.Shell Script(bas
·嵌入式Linux系统的GDB远程调试的
·Linux程式设计.Shell Script(bas
·关于嵌入式Linux系统进程调度的
·介绍B-SHELL的一些运用方法
·教你一种实现嵌入式Linux系统新
·剖析Linux 2.6内核在嵌入式上的
·主流嵌入式Linux系统下GUI解决方
·嵌入式Linux系统的图像采集与显
·Linux操作系统内核启动参数详细
·详细解析Linux操作系统的内核空
·内核空间SMP编程

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!