离线下载
PDF版 ePub版

见证大牛成长之路 · 更新于 2017-09-21 18:00:27

shell 学习----小结

小结

read 命令会读取行并将数据分割为哥哥字段,供赋值给指明的 shell 变量。搭配 -r 选项,可控制数据要如何被读取。

I/O 重定向允许你改编程序的来与与目的地,或者将多个程序一起执行与 subShell 或代码块里。除了重定向到文件和从文件从定向之外,管道还可以用于将多个程序连接在一起。嵌入文件则提供了行内输入。

文件描述符的处理是基本操作,特别是文件描述符 1 与 2,会重复的用在日常的脚本编写中。

printf 是一个深具灵活性,但有点复杂的命令,用途是产生输出。大部分的时候,他可以简单的方式使用,但是他的力量很大。

shell 会执行许多的展开 (或替换) 在每个命令行的文字上:波浪号展开式 (如果有支持) 与通配符,变量展开,算术展开以及命令替换。通配符现已包含 POSIX 字符集,用来针对文件名内的字符进行独立于 locale 的匹配。为了使用上方便,点号文件并未包含在通配符展开中。命令替换有两种形式:...(反引号) 为原始形式,而 $(...) 为较新,较好写的形式。

引用会保护不同的源代码原件,免于被 shell 做特殊处理。单个的字符可能会以前置反斜杠的方式引用使用。单引号会保护所有括起来的字符;引号括起来的所有文字都不做处理,切尼不可以将单引号内嵌到以单引号引用的文字内。双引号则是组合括起来的项目,从而视为单一的单词或参数,但是变量,算术与命令替换仍旧应用到内容中。

eval 命令的存在是为了取代一般命令行替换与执行书讯,让 shell 脚本可以动态的构建命令。这个功能很好用,但是请小心使用,花点时间了解 shell 在执行输入行时的顺序绝对是有好处的。

subSHell 与代码块是组化命令的两种选择。它们的用一个不相同,可以根据需求选用。内建命令的存在是因为它们要改变 shell 内部状态且必须是内建的 (例如 cd),有些则是为了效率,则可以编写一个能使内建命令生效的 shell 函数。在所有内建命令里,set 命令是最复杂的。