入门 Shell 脚本最常用于系统管理工作,或者用于结合现有的程序以完成小型、特定的工作。脚本编程语言与编译型语言的差异许多中、大型程序都是编译型语言,如 Fortran 、 Ada 、C、 C++ 或者 Java ( 有些特殊)。这类程序只要从源代码( Source Code )转换成目标代码( Object Code )便能直接通过计算机执行。这样的好处是高效, 缺点是它们多半运行于底层, 处理的是字节、数字或是机器层级的对象, 很难进行“将一个目录里所有文件复制到另一个目录中”这类对文件的简单操作。脚本语言通常是解释型( interpreted )的,由解释器( interpreter )读入程序代码,将其转换成内部形式。好处是它们多半运行在比编译型语言高的层次, 能够轻易处理文件与目录之类的对象, 缺点是效率不如编译型。但是编写更快, 而且目前的速度也已经足够快, 常用脚本语言有: awk 、 Perl 、 Python 、 Ruby 与 Shell 。 Shell 的特点有: 1. 简单性 2. 可移植性 3. 开发容易一个简单的脚本 who 命令可以知道系统有谁登陆,如果有很多用户在登陆,结果会很长,可以使用 wc( 字数统计) 命令,算出行数(line) 、字数(word) 和字符数(character) 。可以使用 wc –l ,只计算出行数$ who | wc –l| 管道符号可以在两个命令之间建立管道( pipeline ): who 的输出成为了 wc 的输入。下面就写一个 shell 脚本将管道转变成一个独立的命令。其实在 Shell 中开发周期很类似,先直接在命令行上测试,之后写入到独立的脚本中。第一行的#! 当 Shell 执行一个程序时, 要求 Unix 内核启动一个新的进程( process ), 在该进程里执行指定的程序。内核知道怎样为编译型程序执行,但 Shell 是解释型程序,当 Shell 要求内核执行时,内核无法执行,会回应” not executable format file ”不是可执行的格式文件的错误信息。 Shell 收到此错误信息时,就会确定不是编译型程序,是 Shell 脚本,接着会启动一个新的/ bin /sh 副本来执行该程序。在当前有很多种 Shell ,需要通过第一行#! 来指定用哪个 Shell 来执行。一般如下: #! 解释器地址选项比如标准的 Shell 脚本: #! /bin/sh 或者独立的 awk 程序: #! /bin/awk –f 这样就表示为是一个 awk 程序。下面有些陷阱( gotchas )需要注意: 1. 系统对第一行# !长度是有限制的,从 63到 1024 个字符不等,因此尽量不要超过 64 个字符 2. 别在选项之后放置任何空白,因为空白也会跟着选项一起传递给被引用程序 3. 知道解释器的完整路径,可以用来规避可一直行问题。下面的写法可以避免某种程度的欺骗式攻击( Spoofing Attack ) 。即添加选项符- ,但不添加选项内容#! /bin/sh - Shell 元素命令与参数 Shell 最基本工作就是执行命令。以空白隔开命令行的各个部分。命令行可以有选项 option ,分号; 可用来分割同一行里的多条命令。如果使用的是& 符号而不是分号,则
Shell脚本学习指南笔记 来自淘豆网m.daumloan.com转载请标明出处.