/images/hugo/avatar.png

6.5 字符串处理

字符串处理

/images/linux_mt/linux_mt.jpg

本节我们来学习 bash shell 编程的第五部分字符串处理,内容包括:

  1. 字符串的切片,基于位置取子穿
  2. 基于模式取子串
  3. 查找和替换
  4. 大小写转换
  5. 变量赋值操作

bash 中获取变量的值可以使用 ${VARIABLE},字符串操作就是在此基础上的扩展。

迭代器和生成器

当我在自己的程序中发现用到了模式,我觉得这就表明某个地方出错了。程序的形式应该仅仅反映它所要解决的问题。代码中其他任何外加的形式都是一个信号,(至少对我来说)表明我对问题的抽象还不够深——这通常意味着自己正在手动完成的事情,本应该通过写代码来让宏的扩展自动实现 — Paul Graham

6.4 数组与算数运算

数组与算数运算

/images/linux_mt/linux_mt.jpg

本节我们来学习 bash shell 编程的第四部分内容数组与算数运算。

1. 数组

数组和字典是编程中非常常用的数据结构,但是 bash 对它们支持都比较有限。原因我们在本章第一节就说过,bash 本质上并不能算一种语言,因此也很少被拿来做复杂的编程。它更适合利用 Linux 中已有的命令完成特定功能。所以 bash 对复杂数据结构的支持很有限。bash 4.0 之后才开始支持字典,默认也只支持一维数组。下面我们将通过数组的声明,赋值和引用来讲解数组的使用。

运算符重载

本章将讨论:

  • Python 如何处理中缀运算符中不同类型的操作数
  • 使用鸭子类型或显式类型检查处理不同类型的操作数
  • 中缀运算符如何表明自己无法处理操作数
  • 众多比较运算符(如 ==、 >、 <=,等等)的特殊行为
  • 增量赋值运算符(如 +=)的默认处理方式和重载方式

1. 运算符重载基础

Python 限制:

6.3 循环

循环

/images/linux_mt/linux_mt.jpg

本节我们来学习 bash shell 编程的第三部分循环,包括以下内容:

  1. for 循环
  2. while 循环
  3. until 循环
  4. 循环体内的控制语句 continue, break

1. for 循环

for 循环通过遍历列表的方式执行循环,列表生成有如下几种方式

继承

本章重点

  • 子类化内置类型的缺点
  • 多重继承和方法解析顺序
  • 讨论构建类层次结构方面好的做法和不好的做法

1. 子类化内置类型

版本差异:

  • 在 Python 2.2 之前,内置类型(如 list 或 dict)不能子类化。
  • 在 Python 2.2 之后,内置类型可以子类化了,

子类化内置类型: