繁体   English   中英

bash 脚本中的 getopts

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM