Linux 在帮助选项中包含子参数以便明智地执行?

Linux 在帮助选项中包含子参数以便明智地执行?,linux,bash,shell,unix,scripting,Linux,Bash,Shell,Unix,Scripting,我正在写一个脚本,可以选择一个文件和打印特定的内容。比如说, san#./script.sh Expected Usage : ./script.sh --file1 --dns (这里它检查文件1,搜索dns名称并打印。基本上,参数下有子参数) 我尝试了以下单个参数/选项: options=$@ arguments=($options) index=0; for argument in $options do index=`expr $index + 1`; case

我正在写一个脚本,可以选择一个文件和打印特定的内容。比如说,

san#./script.sh

Expected Usage : ./script.sh --file1 --dns
(这里它检查文件1,搜索dns名称并打印。基本上,参数下有子参数)

我尝试了以下单个参数/选项:

options=$@

arguments=($options)

index=0;
for argument in $options
do
    index=`expr $index + 1`;
    case $argument in
    -a | --fun1 ) run_function1 ;;
    -b | --fun2 ) run_function2 ;;
    -c | --fun3 ) run_function3 ;;
    esac
done
exit;

[ ${1} ] || helpinfo
任何一个都可以建议使用双参数(子选项)

预期目标选项:

./script.sh


OPTIONS : ./script.sh -h

./script --fun1 stackoverflow
        microsoft
        Google
     --fun2 Yahoo 

基本上,每个函数将查看一个文件。我已经研究了getopt或getopts,但它没有long选项(
--long
不可能,相反,我们只能使用
-l
)。但同样不确定子参数。有谁能帮上忙吗?

这里有一个关于参数解析(包括您所谓的“子选项”)的详细常见问题解答:

我不确定我是否正确理解您的意思。。。但让我们试试我的运气:)


重复:这不是我主要是寻找子选项。不仅仅是短/长。我在我的场景中找不到太多要实现的细节。你能给我一个以上细节的示例代码吗?谢谢
$ cat a.sh
#!/bin/bash

function fun1 {
   echo "fun1 '$1'"
}

function fun2 {
   echo "fun2 '$1'"
}

function err {
   echo "No function has been specified"
   exit 1
}

FUNCTION=err
while [ $# -gt 0 ]; do
   case "$1" in
      -a | --fun1 ) FUNCTION=fun1 ;;
      -b | --fun2 ) FUNCTION=fun2 ;;
      *) $FUNCTION "$1" ;;
   esac
   shift
done

$ ./a.sh --fun1 one two -b three
fun1 'one'
fun1 'two'
fun2 'three'