read 命令会读取行并将数据分割为哥哥字段,供赋值给指明的shell 变量.搭配-r 选项,可控制数据要如何被读取.
I/O 重定向允许你改编程序的来与与目的地,或者将多个程序一起执行与 subShell 或代码块里.除了重定向到文件和从文件从定向之外,管道还可以用于将多个程序连接在一起.嵌入文件则提供了行内输入.
文件描述符的处理是基本操作,特别是文件描述符 1 与 2,会重复的用在日常的脚本编写中.
printf 是一个深具灵活性,但有点复杂的命令,用途是产生输出.大部分的时候,他可以简单的方式使用,但是他的力量很大.
shell 会执行许多的展开(或替换)在每个命令行的文字上:波浪号展开式(如果有支持)与通配符,变量展开,算术展开以及命令替换.通配符现已包含 POSIX 字符集,用来针对文件名内的字符进行独立于 locale 的匹配.为了使用上方便,点号文件并未包含在通配符展开中.命令替换有两种形式:...
(反引号)为原始形式,而$(...)为较新,较好写的形式.
引用会保护不同的源代码原件,免于被 shell 做特殊处理.单个的字符可能会以前置反斜杠的方式引用使用.单引号会保护所有括起来的字符;引号括起来的所有文字都不做处理,切尼不可以将单引号内嵌到以单引号引用的文字内.双引号则是组合括起来的项目,从而视为单一的单词或参数,但是变量,算术与命令替换仍旧应用到内容中.
eval 命令的存在是为了取代一般命令行替换与执行书讯,让 shell 脚本可以动态的构建命令.这个功能很好用,但是请小心使用,花点时间了解 shell 在执行输入行时的顺序绝对是有好处的.
subSHell 与代码块是组化命令的两种选择.它们的用一个不相同,可以根据需求选用.内建命令的存在是因为它们要改变 shell 内部状态且必须是内建的(例如 cd),有些则是为了效率,则可以编写一个能使内建命令生效的 shell 函数.在所有内建命令里,set 命令是最复杂的.