shell脚本编程实例 shell脚本速成

11/28 03:16:42 来源网站:seo优化-辅助卡盟平台

❶ #!/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

    暂无相关资讯
shell脚本编程实例 shell脚本速成