[英]getopts in bash scripts
我想了解一段使用 getopts 的 bash 脚本。
我有
#!/bin/bash
function Argparser () {
while getopts 'o:dfath' arg "$@"; do
case $arg in
'o')
echo "oooooh"
output_dir=${OPTARG}
;;
'd')
echo 'ddddddd'
use_data_calib=true
;;
?)
echo "UNKNWON ARGS: ${OPTARG} "
exit 1
;;
esac
done
}
#----------------------------------------
# user parameters
#----------------------------------------
# data directory(required)
data_root_dir=$1
# output directory
output_dir=${data_root_dir}/videos
declare others=${@:2}
Argparser ${others}
#declare use_data_calib=false #<<-----HERE
echo ${output_dir}
echo ${data_root_dir}
echo ${others}
echo ${use_data_calib}
首先,我想了解dfath
的作用,以及 arguments 使用o:dfath
的期望。 我应该如何调用此脚本以及使用哪些选项?
引起我注意的另一件事是注释行( HERE
)。 我评论了它,现在我可以将use_data_calib
设置为 true 或 false。 但是在我正在阅读的原始代码中,该行没有被注释。 那条线不是违背了论点d
的目的吗? 因为有了那条线, use_data_calib
总是假的......
o:dfath
只是一个字符串,表示脚本采用的选项。
字母是它可以采用的所有选项,例如-o
、 -d
等。冒号左侧的字母表示需要参数的选项,例如-o myargument
。 冒号右边的字母不期望参数。
关于你的第二点,我相信你是对的。 您正在使用的脚本可能不完整或不正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.