最近一直忙着面试,闲暇之余想看下SHELL和Perl编程,增加下自己的身价。
SHELL和Perl的小语法点比较多,看了容易忘。所以我就一边写程序,一边巩固知识点吧。先从SHELL开始,先讲前面3章。Sriranga Veeraraghavan的《精通SHELL编程》的读书笔记。
shell编程
一、变量
1变量的操作
1.1标量变量
name=value FRUIT=peach
带空格的变量值需要用引号引起来。
访问变量 $echo $FRUIT
1.2数组变量
建立数组
如果一个数组变量名和一个已经被定义了的标量变量名重名,那么标量变量的值就变成了数组变量中索引为0的值。
ksh: set -A name value1 value2 ... valueN
bash: name=(value1 ... valueN)
访问数组中的值
${name[index]} ${name[*]}
只读变量 readonly
删除变量 unset name
2环境和shell变量
二、置换
元字符是指在shell中具有特殊意义的字符。置换是指shell将包含字符的字符串根据其意义转换成新字符串的过程。
1文件名置换
shell将包含有通配元字符或通配符的字符串转换成一系列的文件名,这就是通配。
通配元字符(通配符) *匹配0个或多个任意字符 ?匹配1个任意字符 [characters]匹配给定的characters中的任何一个字符
cmd [!chars]
2变量置换
高级变量置换:
缺省值置换:${param:-word}
缺省值赋值:${param:=word}
空值错误: ${param:msg}
有值置换: ${param:+word}
3命令和算式置换
命令置换使你能够获得命令的输出结果,算式置换能使你用shell完成简单的整数运算。
命令置换 `command` 是反引号不是但引号
算式置换 $((5/2))
三、引用
关闭对特殊字符含义的解析处理被称为引用(quoting),可以由以下3种方式来实现:
\ ' "
>
引用规则和场合
引用处理忽略单词界限
在命令中的引用处理组合
在单一参数中内嵌多个空格
引用处理换行以在下一行中继续
引用处理以访问包含特殊字符的文件名
引用处理正则表达式通配符
引用处理反斜杠以启用echo转义序列
引用处理通配符以适应cpio很find