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

本文介绍了Shell中的两个常用内置命令:cd和getopts。cd命令用于切换当前工作目录,并详细解释了其参数用法。getopts命令则用于解析脚本或函数的位置参数,包括选项字符及其参数的处理方式。

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值