Linux程序设计读书笔记:第二章 shell程序设计

2.1 什么是shell

  • 解释型语言,不适合用来完成对执行时间比较挑剔或者处理器符合比较大的工作
  • shell是一个做为用户与UNIX系统之间的操作接口的程序,文件的重定向只要使用"<"和"》"就行,管道用一个"|"就能代表,子进程的输出是"$(...)",所有这些的具体细节都早已为用户准备好了。

2.2 管道和重定向

2.2.1 对输出数据进行重定向

  • $ls -l > lsoutput.txt,这条命令将ls命令的输出保存到一个名为lsoutput.txt的文件里去
  • $ps >> lsoutput.txt,这条命令将把ps命令的输出追加到文件尾部
  • 文件描述符0代表一个程序标准输入,文件描述符1代表一个程序标准输出,而文件描述符2代表一个程序标准错误输出

2.2.2 对输入数据进行重定向

  • 不仅能重定向输出信息,还可以重定向输入数据,如$ more < killout.txt

2.2.3 管道

  • 可以用管道操作符"|"把进程连接在一起,UNIX不同于DOS,用管道连接在一起的进程可以同时运行,并会随着数据流在它们之间的流动而自动协调

2.3 可以被视为程序设计语言的shell

2.3.1 交互式程序

2.3.2 编写脚本程序

  • 程序中的注释以一个"#"符号开始,一直持续到该行的结束
  • 在shell程序设计里,exit命令返回"0"表示成功
  • UNIX一般很少通过文件的扩展名来确定文件的类型,可以完全省略".sh",或者给它加上一个不同的扩展名,shell是不关心的,要想知道它们是否是脚本程序,最好的方法就是使用file命令,比如 "file first.sh"

2.3.3 把脚本设置为可执行程序

  • 用chmod命令对已写好的脚本文件的状态(mode)进行修改,是这个文件能够被全体用户执行,$ chomd +x first.sh

2.4 shell程序设计的语法

2.4.1 变量

  • 在shell里,使用变量之前并不需要事先对它们做出声明。在默认情况下,所有变量都被认为是并保存为字符串,即使它们被赋值为数值时也是如此。shell和其它一些工作程序会把"数值"型字符串依次转换为正确的数值,并且按照正确的方式对它们进行操作。

  • 因为UNIX是一个区分字母大小写的系统,shell中依旧如此

  • 在shell里,在变量名前面加上一个"$"字符就可以获得它的内容,echo命令就可以输出它的内容。只要用到变量,我们就可以在它前面加上一个"$"字符,除非我们是在对该变量进行赋值操作。注意,如果字符串里包含着空格,就必须用引号把它们括起来,还要注意等号两边不能有空格。

$salutation=Hello
$echo $salutation
Hello
$salutation="Year Dear"
$echo $salutation
Year Dear
$salutation=7+5
$echo $salutation
7+5


2.4.2 条件测试

2.4.3 控制结构

2.4.4 函数

2.4.5 命令

2.4.6 命令的执行

2.4.7 即时文档

2.4.8 调试脚本程序

2.5 shell程序设计示例

2.5.1 工作需求

2.5.2 设计

2.6 本章总结

posted @ 2010-10-23 19:13  云说风轻  阅读(184)  评论(0编辑  收藏  举报