Kaldi脚本parse_options.sh解析

 这个脚本在别的脚本中调用,目的是修改调用脚本中的默认配置参数。

比如我有了make_mfcc.sh的脚本,里面默认配置了mfcc的一些参数,比如维度、类型等等,然后我在make_mfcc执行的时候,通过命令行传参来修改默认的参数,可以通过调用parse_mfcc.sh来完成这一步。

这就要求parse_options.sh读取它上一层的脚本携带的参数,就是make_mfcc执行时的命令行参数,然后检查当前变量是否包含它,修改之,否则报错。

下面是parse_options.sh的开头部分,这部分shell脚本有点绕、难理解,主要是shell对变量的运算有点反直觉。

 34 for ((argpos=1; argpos<$#; argpos++)); do
 35   if [ "${!argpos}" == "--config" ]; then
 36     argpos_plus1=$((argpos+1))
 37     config=${!argpos_plus1}
 38     [ ! -r $config ] && echo "$0: missing config '$config'" && exit 1
 39     . $config  # source the config file.
 40   fi
 41 done

程序的意图是把argpos当作一个整形变量,循环$#(参数个数)次,检查是否为“--config”,如果是,把它后面指定的配置脚本名称赋值给config变量,然后验证该文件是否可读,是则执行脚本(. $config),否则报错、退出。

${!argpos}表示命令的第argpos(1 2 or 3等)个参数,

$((argpos+1)) argpos变量加一;

argpos_plus1=$((argpos+1)) # 这里argpos_plus1值为2或者3...

则,${!argpos_plus1}为第argpos_plus1个参数

然后[! -r $config]表示,如果配置不可读,则返回true,然后执行错误分支,否则什么也不做,执行下一步。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值