本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅
自删除脚本
#!/bin/rm #自删除脚本 #当你运行这个脚本时,基本上什么都不会发生...除非这个文件消失不见 WHATEVER=65 echo "This lines will never print(betcha!)." exit $WHATEVER #没关系,这个脚本是不会在这里退出的
“为什么我们写脚本开头要加#!/bin/bash ?因为#!(即sha-bang)告诉系统这个文件需要一个解释器,而/bin/bash就是这个文件的解释器,所以开头可以是python可以是/bin/ls可以是/bin/sed,可以是/bin/rm。可能是一个shell, 也可能是一个程序语言, 也可能是一个工具包中的命令程序. 这个解释程序从头开始解释并且执行脚本中的命令(从sha-bang行下边的一行开始),关于#!输入man magic可以查询。我们赋予某个脚本文件如test.sh执行的权限那么就可以直接输入test.sh运行不是吗?相当于输入/bin/bash test.sh (sh test.sh) 所以解释器为rm时那样执行就相当于执行/bin/rm test.sh所以当然文件被删除了”,这是红联linux上网友dujingxi的解释,我觉得很好,就引过来了。这句话恰好的解释了shell中的命令解释器,原文地址是http://www.linuxdiyf.com/viewarticle.php?id=274248。
脚本执行结果
Result:rm.sh脚本自动消失,什么都不会出现
abs中还有一句话:当然,你还可以试试在一个README文件的开头加上#!/bin/more,并让它具有执行权限.结果将是文档自动列出自己的内容.
我们尝试一下:
1.首先用find命令查找一下根目录下的所有后缀为README的文件
2.我们以第一个“/usr/share/mysql/charsets/README”为例,在文件开头加入#!/bin/more
3.赋予权限,执行,会自动读出文档的内容