【Bash百宝箱】shell内建命令之cd、getopts
2016-09-19 20:38
495 查看
1、cd
在shell中,内建(builtin)命令cd,格式如下:cd [-L | -P] [dir]
cd命令用于改变当前工作目录,新的工作目录为dir,如果没有指定dir,则使用shell系统变量“HOME”的值,参数“-L”表示不跟踪符号链接,如果dir是一个符号链接的目录,结果便是dir本身,“-P”表示物理链接即跟踪符号链接,如果dir是一个符号链接的目录,结果则是dir指向的实际物理目录,默认为“-L”。执行成功时退出状态为0,否则为1。
在shell中,有几个特殊的目录,列举如下:
~ 表示用户主目录 / 表示根目录 - 表示最近一次的工作目录即系统变量“OLDPWD”的值 . 表示当前目录 .. 表示上一层目录即父目录
2、getopts
在shell中,内建(builtin)命令getopts,格式如下:getopts optstring name [args]
getopts命令用于分析shell中的位置参数,比如说执行shell脚本的参数、shell函数的参数。
optstring包含待识别的选项字符,选项字符不可以是冒号和问号,如果一个选项字符后面跟着冒号,这个选项就要接受一个参数,参数与选项间以空格分隔。
每次执行getopts时,name保存了当前的选项字符,结束时name的值为一个问号,遇到了无效选项时也存储问号,如果有选项参数,则保存在了系统变量OPTARG中,下一个待处理的参数下标保存在了系统变量OPTIND中,OPTIND在当前shell启动或shell脚本执行时被设置为1,而后随着getopts的执行而变化,如果在同一个shell中需要重新执行getopts分析位置参数,就需要手动重置OPTIND的值了。getopts结束时,其退出状态大于0。
一般情况下,getopts会分析位置参数,但是如果args包含了更多的参数时,getopts就会分析args指定的参数了。
getopts错误报告有两种方式,一种是optstring的第一个字符,如果为冒号,则不会报告错误信息;另一种是系统变量OPTERR,默认为1,如果设置为0,则不会报告错误信息。只有当optstring的第一个字符不为冒号,且OPTERR不为0时,才会报告错误信息。
下面是使用了getopts的一个例子:
$ cat test.sh while getopts a:b name do echo "name: $name" echo "OPTARG: $OPTARG" echo "OPTIND: $OPTIND" echo "----------" done echo "name: $name" echo "OPTARG: $OPTARG" echo "OPTIND: $OPTIND" $ bash test.sh -a test -b name: a OPTARG: test OPTIND: 3 ---------- name: b OPTARG: OPTIND: 4 ---------- name: ? OPTARG: OPTIND: 4
相关文章推荐
- 【Bash百宝箱】shell内建命令之alias与unalias
- 【Bash百宝箱】shell内建命令之bind、enable、ulimit
- 【Bash百宝箱】shell命令
- 【Bash百宝箱】shell内建命令之echo、printf
- 【Bash百宝箱】shell内建命令之冒号
- 【Bash百宝箱】shell历史命令(history)
- 【Bash百宝箱】shell内建命令之句点与source
- 【Bash百宝箱】shell内建命令之hash
- 【Bash百宝箱】shell内建命令之break与continue
- 【Bash百宝箱】shell内建命令之pwd、readonly、return、shift
- 【Bash百宝箱】shell内建命令之eval、exec、exit、export
- 【Bash百宝箱】shell内建命令之times、umask、unset
- 【Bash百宝箱】shell内建命令之echo、printf
- 【Bash百宝箱】shell内建命令之test
- 【Bash百宝箱】shell内建命令之builtin、command、caller
- 【Bash百宝箱】shell内建命令之help、type、let、logout
- 【Bash百宝箱】shell内建命令之set、shopt
- 【Bash百宝箱】shell内建命令之trap
- 【Bash百宝箱】shell内建命令之declare、typeset、local
- 【Bash百宝箱】shell内建命令之read、readarray、mapfile