第2章 shell程序设计
2.1 管道和重定向
标准文件描述符0、1、2分别代表,标准输入,标准输出和标准错误。
把输出内容附加到一个文件:ps >> lsout.txt
默认重定向的是标准输出。也可以把标准错误也重定向。
如 Kill -HUP 1234 >killout.txt 2 > killerr.out
也可以把两个输出都定向到同一个文件,
如 kill -1 1234 >killout.txt 2>&1
也可以丢弃所有输出信息,如:
Kill -1 1234 >/dev/null 2 >&1
也可以重定向输入
如 more < killout.txt
管道例子 ps | sort | more
Sort 可以重排序,more 可以 分页输出
2.2 shell 程序
注意,当shell期待进一步输入时,正常的$号就变成了>号。
Shell 还提供通配符扩展功能。
* 匹配一个字符串, ?可以匹配单个字符, [set] 匹配方括号中的任意一个单个字符。[^set] 对方括号内容去反,即匹配任意未出现的字符。扩展的花括号{},仅仅部分shell支持。可以用来匹配字符串。
如:ls my_{finger, toe}s
默认脚本执行程序
#!/bin/sh
脚本最后以exit结尾,是为了确保脚本程序能够返回一个有意义的退出码。
2.3 shell 语法
变量,在shell中使用变量,不需要提前声明。无论何时你想获取一个变量的内容,在变量名前加$,如果给变量赋值,直接使用变量名字就可以了。
如果字符串里包含空格,就必须用引号把它们括起来,此外。等外等号两边不能有空格。
我们也可以使用read 命令读入一个变量。