----正在学习shell,途中做些笔记,整理整理,方便以后翻阅。----
----RHEL_6.2_x64,GNU bash version 4.1.2(1)-release---- 
几乎每个shell脚本都是以#!开头,接下来就讲讲关于#!的一些东西。
1)编写好的脚本需要一个解释器,这就需要在脚本的开始利用#!指定你需要用到的解释器。当然你也可以不指定,不过这样的话,你的脚本就是一堆命令的集合。如果你的默认shell不是Bash,那许多Bash非常好的特性则不会起作用,更严重的是许多命令甚至变量都无法使用,比如Bash的内建命令:echo、read等等。如果不能使用变量的话,当然这也就失去了脚本编程的意义了。
2)#!是指定文件类型的特殊标记,在这种情况下也就是指这是一个脚本文件。在#!之后接着是一个路径名,这个路径名就是解释脚本中命令的解释程序所在的路径,可能是一个shell, 也可能是一个程序语言, 也可能是一个工具包中的命令程序。这个解释程序从头开始解释并且执行脚本中的命令(从sha-bang行下边的一行开始),忽略注释。
3)指定解释器种类
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f
上面的每一个脚本的开头行都是一种解释器,如果是/bin/sh, 那么就是默认shell (在Linux系统上默认就是 bash), 否则的话就是其他解释器,如果你只使用默认的解释器的话,这行也可以不写。使用 #!/bin/sh, 因为大多数的商业UNIX系统上都是以Bourne shell作为默认shell,这样可以使脚本移植到non-Linux的机器上,虽然这将会牺牲Bash一些独特的特征,但是脚本将与POSIX 的sh标准相一致。
4)#!后面紧跟解释器的路径。给出的路径名必须是正确的, 否则将会出现一个错误消息 -- 通常是"Command not found" -- 这将是你运行这个脚本时所得到的唯一结果。空白行也被认为是一行,所以不要让你的脚本以空白行开始。
5)因为这行是以#作为行的开头,当命令解释器执行这个脚本的时候,会把它作为一个注释行。 当然,在这之前, 这行语句已经完成了它的任务,就是调用命令解释器,如果脚本中还包含有其他的#!行, 那么bash将会把它看成是一个一般的注释行。
注意:
1)那些具有UNIX味道的脚本(基于4.2BSD)需要一个4字节的魔法数字,在#!后边需要一个空格 -- #! /bin/sh. 
2) 你还可以试试在一个README 文件的开头加上一个#!/bin/more ,并让它具有执行权限。结果将是文档自动列出自己的内容。 (一个使用cat命令的 here document在这里可能是一个更好的选择。

转载于:https://blog.51cto.com/xuke1668/842471

#!(sha-bang)--脚本的开始相关推荐

  1. Revvel如何将视频转码速度提升几十倍?

    来自Revvel的团队的Greg Femec在re:Invent 2017大会上分享了他在构建视频转码服务中遇到的挑战,以及构建基于Serverless架构的视频转码平台的经验.Revvel团队将视频 ...

  2. Lua语言模型 与 Redis应用

    Lua语言模型 与 Redis应用 标签: Java与NoSQL 从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis. 本篇博客主要介绍了 Lua 语言不一样的设计 ...

  3. Redis分布式锁(图解 - 秒懂 - 史上最全)

    文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...

  4. redisson使用全解——redisson官方文档+注释(中篇)

    文章目录 八.分布式锁和同步器(重要!) 8.1. 可重入锁(Reentrant Lock) 8.2. 公平锁(Fair Lock) 8.3. 联锁(MultiLock) 8.4. 红锁(RedLoc ...

  5. python秒数转化为时间用户jianpang_Python写了个域名注册查询脚本,支持自定义数字,字母,拼音组合以及域名长度....

    Python写了个域名注册查询脚本,支持自定义数字,字母,拼音组合以及域名长度. python版本3.5,需要安装requests, lxml库 1.[代码][Python]代码 import req ...

  6. SQL脚本通过汉字转换为拼音全拼

    调用样例: select dbo.fn_GetPinYinFull('拿来主义,我爱你中国,亲爱的母亲') 输出结果 NaLaiZhuYi,WoAiNiZhongGuo,QinAiDeMuQin SQ ...

  7. 路由器运行python脚本_写个Python脚本来登录小米路由器

    这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...

  8. SHELL训练营--day5__shell脚本(1)

    shell脚本意义 shell是一种脚本语言,具备计算机语言的基本特点:逻辑判断.循环.自定义函数等. shell脚本 主要使用 linux系统的命令,来实现特定目的. 可用于自动化运维,提长运维效率 ...

  9. Linux Shell 脚本知识点

    正则表达式在线生成工具: http://tools.jb51.net/regex/create_reg 0. shell 调试 复制代码 代码如下: sh -x somefile.sh 在somefi ...

  10. shell for循环命令行_精心汇总的24道shell脚本面试题

    虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...

最新文章

  1. python3自动释放线程_Python3高级特性:并发
  2. 让你的JXTA应用更加安全.建立真正你自己的私有的组!
  3. sql 数组_sql注入中级
  4. fckeditor文件管理器添加查看、修改、删除文件功能[php]修正下载地址
  5. Petya and Staircases CF212div.2B
  6. linux top cpu瓶颈,Linux命令----分析CPU的瓶颈
  7. Mac Brew Uninstall MySql
  8. Python TCP 学习笔记
  9. C++学生信息管理系统
  10. mysql alter操作
  11. 解决PD虚拟机下载ch341驱动 虚拟机学习单片机 MAC学习单片机
  12. fdfs文件服务环境搭建
  13. 美国飞机安全事件频发:背后黑手竟然是5G?
  14. 15款超好用的新浪微博短链接在线生成器(新浪t.cn、腾讯url.cn)
  15. 《上古卷轴5:天际》控制台代码之配料药剂
  16. 人脸检测论文:FaceBoxes: A CPU Real-time Face Detector with High Accuracy及其Pytorch实现
  17. React- Hook 踩坑“useState“ is called in function “addP“ which is neither a React
  18. 数据库的三级模式结构和两级映像
  19. 示波器怎么当做记录仪用​
  20. 树莓派拓展模拟量采集(AD)功能

热门文章

  1. 协同过滤算法评测python_元学习和推荐系统:协同过滤算法选择问题的文献综述和实证研究...
  2. java hashmap扩容大小_HashMap的扩容机制以及默认大小为何是2次幂
  3. rowid 对应mysql_请教一下相当于MySQL中Oracle的RowID
  4. free网页服务器,Web网站服务(一)
  5. 过程声明与同名事件或过程的描述不匹配_多特征结合的倾斜无人机影像匹配方法...
  6. python降维之时间类型数据的处理_python学习笔记之使用sklearn进行PCA数据降维
  7. 计算机网络管理员五级试题,计算机网络管理员考试试题库和答案.doc
  8. oracle pl sql 抛出例外
  9. mysql 密码忘记了怎么办? [仅msyql8版本]
  10. C# 三层级架构问题之 能加载文件或程序集或它的某一个依赖项。系统找不到指定的文件