第13章 处理用户输入
13.1 命令行参数
1. 命令行参数。command 参数1 参数2...。用空格隔开。在脚本中引用时,$0为程序名(脚本名称),$1为第一个参数,$2为第二个参数,以此类推,一直到第九个参数,第十个参数开始,用$(10)表示。当参数为文本字符串时,若字符串中有空格,则字符串需用引号(单引号双引号都行)引起来。
2. $0 表示程序名,存储的是整个脚本的绝对路径。basename $0 可以只获取脚本名字。
3. if [ -n $1 ] 可以检查参数是否有数据。
13.2 特殊参数表量
1. 参数计数。$# 特殊变量表示脚本命令行参数的个数。params=$#, 然后$params 就可以取得最后一个变量,或者用$(!#)也可以获得最后一个变量。
2. 获取所有数据。$* 将所有参数当作一个字符串整体。$@ 则将循环遍历所有参数。
13.3 移动变量
shift命令将移动命令行参数变量,$2变量的值将会移动到 $1,而$1变量的值将会被删除,且不能恢复。但是$0变量的值不变。shift n 表示移动n个位置。
13.4 处理选项
即command -options 形式。
1. 处理简单选项(只有选项没有参数)。用shift命令移动选项。
2. 分离参数和选项。用“--”(双破折号)分隔参数和选项。
3. 处理带值选项。
4. 使用getopt命令。getopt optstring -options parameters, optstring表示所有需要用到的选项字母,带参数的选项字母后面加个冒号。
getopt ab:cd