网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > linux > Linux编程 > SHELL编程 > Linux下的shell编程入门  

Linux下的shell编程入门

2006-10-18  作者:bitsCN整理  来源:ChinaITLab收集整理  点评 投稿 收藏

  通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应。一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率。要达到这样的目的,通常我们利用shell程序或者shell脚本来实现。

网管u家u.bitscn@com

  一、简介 网管论坛bbs_bitsCN_com

  Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂。Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令。 网管网www_bitscn_com

  下面我们来看一个简单的shell程序:

网管联盟bitsCN_com

  1、首先建立一个内容如下的文件,名字为date,将其存放在目录下的bin子目录中。

网管下载dl.bitscn.com

  #Program date 网管论坛bbs_bitsCN_com

  #usageto ::show the date in this way (注释) 网管联盟bitsCN@com

  echo “Mr.$USER,Today is:” 网管u家u.bitsCN.com

  echo date “+%B%d%A” 网管下载dl.bitscn.com

  echo “Whish you a lucky day !”

网管联盟bitsCN_com

  2、编辑完该文件之后它还不能执行,我们需要给它设置可执行权限。使用如下命令:

网管网www_bitscn_com

  chmod +x date 网管论坛bbs_bitsCN_com

  通过以上过程之后,我们就可以像使用ls命令一样执行这个shell程序. 网管论坛bbs_bitsCN_com

  [beichen@localhost bin]$ date 网管联盟bitsCN@com

  Mr.beichen,Today is:

网管联盟bitsCN@com

  January 13 Friday

网管网www_bitscn_com

  Whish you a lucky day !

网管u家u.bitscn@com

  为了在任何目录里都可以执行这个程序,可以将bin的这个目录添加到路径中去。

网管论坛bbs_bitsCN_com

  [beichen@localhost bin]$ PATH=$PATH:$HOME/bin

中国网管联盟bitsCN.com

  (注:这里的$HOME代替的是/home/beichen,而bin目录是自己建的一个目录) 网管联盟bitsCN@com

  另外一种执行date的方法就是把它作为一个参数传给shell命令:

网管联盟bitsCN_com

  [beichen@localhost /]$ bash date

网管网www_bitscn_com

  Mr.beichen,Today is:

网管网www.bitscn.com

  January 13 Friday

网管联盟bitsCN_com

  Whish you a lucky day ! 网管下载dl.bitscn.com

  尽管在前面我们使用chmod +x date将date设置为可执行,其实不设置也没有关系,但在Linux里执行它,需要先告诉系统它是一个可执行的脚本。

网管u家u.bitscn@com

  [beichen@localhost /]$ .date 网管下载dl.bitscn.com

  Mr.beichen,Today is: 网管联盟bitsCN@com

  January 13 Friday

网管u家u.bitsCN.com

  Whish you a lucky day !

网管联盟bitsCN_com

  即在date前面加上一个点”.”,并且用空格与后面的shell脚本的文件名隔开。当然,不推荐这样做。

网管u家u.bitsCN.com

  二、shell参数

中国网管论坛bbs.bitsCN.com

  如同ls 命令可以接受目录等作为它的参数一样,在shell编程时同样可以使用参数。Shell有位置参数和内部参数。 网管u家u.bitsCN.com

  1、 位置参数 网管网www.bitscn.com

  由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。 网管联盟bitsCN@com

  2、 内部参数 网管网www.bitscn.com

  上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。 网管u家u.bitscn@com

  $# ----传递给程序的总的参数数目

网管网www.bitscn.com

  $? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。 网管u家u.bitsCN.com

  $* ----传递给程序的所有参数组成的字符串。

中国网管论坛bbs.bitsCN.com

  下面举例进行说明:

网管联盟bitsCN@com

  建立一个内容为如下的程序P1: 网管联盟bitsCN@com

  echo “Program name is $0” 网管u家u.bitscn@com

  echo “There are totally $# parameters passed to this program”

网管下载dl.bitscn.com

  echo “The last is $?” 中国网管论坛bbs.bitsCN.com

  echo “The parameters are $*”

网管u家u.bitsCN.com

  执行后的结果如下:

网管u家u.bitscn@com

  [beichen@localhost bin]$ P1 this is a test program //传递5个参数 网管u家u.bitsCN.com

  Program name is /home/beichen/bin/P1 //给出程序的完整路径和名字

网管联盟bitsCN@com

  There are totally 5 parameters passed to this program //参数的总数

网管下载dl.bitscn.com

  The last is 0 //程序执行结果

网管联盟bitsCN@com

  The parameters are this is a test program //返回有参数组成的字符串

网管联盟bitsCN@com

  网管论坛bbs_bitsCN_com

网管联盟bitsCN@com


TAGs   入门   编程   操作   程序   文件   一个   shell   字符串   执行   echo      
 上一篇:使用 Bash shell 脚本进行功能测试   下一篇:Bash 实例:探讨 ebuild 系统
Linux下的shell编程入门 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: