Shell几点注意事项

编写完脚本之后,你可以使用sh scriptname,[5]或者bash scriptname来调用它.
(不推荐使用sh 更方便的方法是让脚本本身就具有可执行权限,通过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这种
        形式.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487370/viewspace-1325872/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29487370/viewspace-1325872/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值