专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>高级Bash脚本编程指南>

2.1 调用一个脚本 初步的练习

百度收藏 QQ搜藏

----------------
编写完脚本之后,你可以使用sh scriptname,[5]或者bash scriptname来调用它.(不推荐使用sh <scriptname,因为这禁用了脚本从stdin中读数据的功能.)更方便的方法是让脚本本身就具有可执行权限,通过chmod命令可以修改.

比如:
    chmod 555 scriptname (允许任何人都具有 可读和执行权限) [6] 
或:
 chmod +rx scriptname (允许任何人都具有 可读和执行权限)
 chmod u+rx scriptname (只给脚本的所有者 可读和执行权限)

既然脚本已经具有了可执行权限,现在你可以使用./scriptname.[7]来测试它了.如果这个脚本以一个"#!"行开头,那么脚本将会调用合适的命令解释器来运行.

最后一步,在脚本被测试和debug之后,你可能想把它移动到/usr/local/bin(当然是以root身份),来让你的脚本对所有用户都有用.这样用户就可以直接敲脚本名字来运行了.

注意事项:
[1]  那些具有UNIX味道的脚本(基于4.2BSD)需要一个4字节的魔法数字,在#!后边需要一个 空格#! /bin/sh.
[2]  脚本中的#!行的最重要的任务就是命令解释器(sh或者bash).因为这行是以#开始的,当命令解释器执行这个脚本的时候,会把它作为一个注释行.当然,在这之前,这行语句, 已经完成了它的任务,就是调用命令解释器.

  如果在脚本的里边还有一个#!行,那么bash将把它认为是一个一般的注释行.
   1 #!/bin/bash
   2
   3 echo "Part 1 of script."
   4 a=1
   5
   6 #!/bin/bash
   7 # 这将不会开始一个新脚本.
   8
   9 echo "Part 2 of script."
  10 echo $a  # Value of $a stays at 1.
[3]  这里可以玩一些小技巧.
   1 #!/bin/rm
   2 # 自删除脚本.
   3
   4 # 当你运行这个脚本时,基本上什么都不会发生...除非这个文件消失不见.
   5
   6 WHATEVER=65
   7
   8 echo "This line will never print (betcha!)."
   9
  10 exit $WHATEVER  # 没关系,脚本是不会在这退出的.
  当然,你还可以试试在一个README文件的开头加上#!/bin/more,并让它具有执行权限.结果将是文档自动列出自己的内容.(一个使用cat命令的here document可能是一个更好的选则,--见Example 17-3).
[4]  可移植的操作系统接口,标准化类UNIX操作系统的一种尝试.POSIX规范可以在 http://www.opengroup.org/onlinepubs/007904975/toc.htm中查阅.
[5]  小心:使用sh scriptname来调用脚本的时候将会关闭一些Bash特定的扩展,脚本可能 因此而调用失败.
[6]  脚本需要读和执行权限,因为shell需要读这个脚本.
[7]  为什么不直接使用scriptname来调用脚本?如果你当前的目录下($PWD)正好有你想要执行的脚本,为什么它运行不了呢?失败的原因是,出于安全考虑,当前目录并没有被加在用户的$PATH变量中.因此,在当前目录下调用脚本必须使用./scriptname这种形式.

2.2 初步的练习
--------------
1. 系统管理员经常会为了自动化一些常用的任务而编写脚本.举出几个这种有用的脚本的实例.
2. 编写一个脚本,显示时间和日期,列出所有的登录用户,显示系统的更新时间.然后这个脚本将会把这些内容保存到一个log file中.

上一篇:2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 下一篇:3. 特殊字符

power by soyo123 2007-2008