0

ファイルを選択して特定のコンテンツを印刷できるスクリプトを書いています。例えば、

san#./script.sh

Expected Usage : ./script.sh --file1 --dns

(ここでは、file1 をチェックし、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 

基本的に、各関数は 1 つのファイルを調べます。getopt または getopts を調べましたが、長いオプションはありません (--longは使用できません。代わりに のみを使用できます-l)。しかし、やはりサブパラメータがわかりません。誰でもこれを助けることができますか?

4

2 に答える 2

1

あなたのことをちゃんと理解できているかどうかわかりませんが、運試ししてみましょう :)

$ 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'
于 2013-05-10T20:43:43.383 に答える
0

パラメータの解析 (「サブオプション」と呼ばれるものを含む) を扱う詳細な FAQ があります: http://mywiki.wooledge.org/BashFAQ/035

于 2013-05-03T17:17:51.760 に答える