❶ #!/bin/bash
 echo "Hello World"
 echo $(which neqn)
 cat $(which neqn)
我们在脚本顶端加上了一行/bin/bash❶。这行叫作shebang。shebang允许你指定用哪个程序来解释脚本。这里选择将文件作为bash脚本。你可能还碰到过其他shebang,例如针对Perl(#!/usr/bin/perl)或Ruby(#!/usr/bin/env ruby)的。
shebang:这个词其实是两个字符名称sharp-bang 的简写。在Unix 的行话里,用sharp 或hash(有时候是mesh)来称呼字符“#”,用bang 来称呼惊叹号“!”,因而shebang 合起来就代表了这两个字符。详情请参考:en.wikipedia.org/wiki/Shebang_(Unix)。
有了这行,还得设置文件权限才能像其他程序那样直接运行shell脚本。在终端中的操作方法如代码清单0-6所示。
代码清单0-6将脚本intro的权限修改为可执行
❶ $ chmod +x intro
❷ $ ./intro
 Hello World
 /usr/bin/neqn
 #!/bin/sh
 # Provision of this shell script should not be taken to imply that use of
 # GNU eqn with groff -Tascii|-Tlatin1|-Tutf8|-Tcp1047 is supported.
 GROFF_RUNTIME="${GROFF_BIN_PATH=/usr/bin}:"
 PATH="$GROFF_RUNTIME$PATH"
 export PATH
 exec eqn -Tascii ${1+"$@"}
 # eof
 $
我们用到了权限修改命令chmod❶并将+x作为命令参数,该参数可以将随后指定的文件设置为可执行权限。权限设置好之后,不用调用bash就可以直接运行shell脚本❷。这是一种很好的shell脚本编程实践,在你以后精进技艺的过程中就会发现它的作用了。
这只是一个简单的例子,告诉你如何运行shell脚本,如何使用shell脚本运行其他的shell脚本。在今后编写shell脚本的时候,你也会看到更多的shebang。
为什么要用shell脚本
你也许疑惑为什么偏要选择bash shell脚本,而不去用那些漂亮的新语言,比如Ruby或Go。尽管这些语言都试图在多种系统上实现可移植性,但它们通常并没有被默认安装。原因很简单:所有Unix机器上都已经有了一个基本的shell,而且绝大多数用的都是bash shell。
文章开头也提到过卡盟,微软最近在Windows 10中也加入了多数Linux发行版和OS X中采用的bash shell。这意味着你的shell脚本几乎不需要做什么额外的工作,就拥有了比以往更好的可移植性。相较于其他语言,shell脚本能够更准确、更轻松地完成系统维护及其他任务。
代码清单0-7中展示了一个方便的微型shell脚本(没错,只有一行),完全可移植。该脚本可以统计出OpenOffice文档目录中的文档共有多少页,这对于作者特别有用。
代码清单0-7统计OpenOffice文档目录中文档页面数量的bash脚本
#!/bin/bash
echo "$(exiftool *.odt | grep Page-count | cut -d ":" -f2 | tr '\n' '+')""0" | bc
![新亿卡盟刷钻平台 [最新]热火卡盟开钻平台宣扬稿](http://www.fuzhukm.com/d/file/p/2022/11-28/1669565665679_0.jpg) 
  
  
  
 