程序员人生 网站导航

【Bash百宝箱】shell内建命令之cd、getopts

栏目:php教程时间:2016-09-29 08:42:36

1、cd

在shell中,内建(builtin)命令cd,格式以下:

cd [-L | -P] [dir]

cd命令用于改变当前工作目录,新的工作目录为dir,如果没有指定dir,则使用shell系统变量“HOME”的值,参数“-L”表示不跟踪符号链接,如果dir是1个符号链接的目录,结果便是dir本身,“-P”表示物理链接即跟踪符号链接,如果dir是1个符号链接的目录,结果则是dir指向的实际物理目录,默许为“-L”。履行成功时退出状态为0,否则为1。

在shell中,有几个特殊的目录,罗列以下:

~ 表示用户主目录 / 表示根目录 - 表示最近1次的工作目录即系统变量“OLDPWD”的值 . 表示当前目录 .. 表示上1层目录即父目录

2、getopts

在shell中,内建(builtin)命令getopts,格式以下:

getopts optstring name [args]

getopts命令用于分析shell中的位置参数,比如说履行shell脚本的参数、shell函数的参数。

optstring包括待辨认的选项字符,选项字符不可以是冒号和问号,如果1个选项字符后面随着冒号,这个选项就要接受1个参数,参数与选项间以空格分隔。

每次履行getopts时,name保存了当前的选项字符,结束时name的值为1个问号,遇到了无效选项时也存储问号,如果有选项参数,则保存在了系统变量OPTARG中,下1个待处理的参数下标保存在了系统变量OPTIND中,OPTIND在当前shell启动或shell脚本履行时被设置为1,而后随着getopts的履行而变化,如果在同1个shell中需要重新履行getopts分析位置参数,就需要手动重置OPTIND的值了。getopts结束时,其退出状态大于0。

1般情况下,getopts会分析位置参数,但是如果args包括了更多的参数时,getopts就会分析args指定的参数了。

getopts毛病报告有两种方式,1种是optstring的第1个字符,如果为冒号,则不会报告毛病信息;另外一种是系统变量OPTERR,默许为1,如果设置为0,则不会报告毛病信息。只有当optstring的第1个字符不为冒号,且OPTERR不为0时,才会报告毛病信息。

下面是使用了getopts的1个例子:

$ 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
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐