0

渡されたパラメータから文字列を抽出する必要があるシェルスクリプトに取り組んでいます。次のようなパラメータを渡す場合

      test.sh arg1=someArgument Arg2=AnoTherArgument

いずれの場合も、ユーザーが名前と値を使用して引数を渡すことができると想定します。

パラメータを抽出して操作する必要があります。

      for arg in "$@"
      do
          if [ lower("${arg}") == "arg1" ] then
                # extract arg1's value and do something
          elif [ lower("${arg}") == "arg2" ] then
                # extract arg2's value and do something
          fi
      done

渡されたのと同じ場合にパラメータの値を抽出するにはどうすればよいですか?

4

3 に答える 3

3

わかりやすくするために、次のようなケースステートメントを好みます。

while [ $# -gt 0 ]
do
    case $1 in
    a=* ) echo ${1#a=};;
    b=* ) echo ${1#b=};;
    # etc
    esac
    shift
done
于 2012-07-25T12:15:26.557 に答える
0

二重括弧を使用してグロブ パターンに一致させます。「then」の前にセミコロンが必要です

if [[ "$arg" = a=* ]];then echo ${arg#a=};fi

また

if [ "${arg%%=*}" = a ];then echo ${arg#a=};fi

詳細については

man bash
/Parameter Expansion
于 2012-07-25T12:08:39.890 に答える
0

なぜわざわざ引数を解析する必要があるのでしょうか? 環境を介して物を渡す:

foo

#!/bin/sh
echo Value of arg1: ${arg1-default value}

それで:

$ arg1=blah ./foo
Value of arg1: blah

$ ./foo
Value of arg1: default value
于 2012-07-25T18:46:35.957 に答える