在shell脚本中解析参数

时间:2014-10-07 00:18:57

标签: linux oracle bash shell unix

所有

我正在尝试编写一个shell脚本(让我们称之为mysh),它调用另一个shell脚本(让我们将其命名为原始脚本)。

origin脚本采用几个参数,语法如下:

./origin.sh /A=appname,/U=admin,/LL=ADMINISTRATOR

在mysh脚本中,将调用该原始脚本,有人可以让我知道如何在shell脚本中解析这些参数(/ A,/ U,/ LL)吗?通过定义变量?

这应该是一项简单的任务,请以简单的方式思考:D

感谢所有

2 个答案:

答案 0 :(得分:0)

更改" /"到" - "和","对于space,您可以使用getopts来解析和提取参数。请参阅此处的示例:

http://wiki.bash-hackers.org/howto/getopts_tutorial

或者,摆脱" /"并改变","对于空间,那么每个参数都变成一个参数=值,所以你可以起诉" eval"设置这些是环境变量。

类似的东西:

for P in $*
do
   eval $P
done

答案 1 :(得分:0)

以下代码将解析为关联数组:

declare -A settings=( )

for arg; do                               # iterate over all arguments
  if [[ $arg = /* ]]; then                # ignore ones not starting with slashes
    IFS=, read -r -a items <<<"$arg"      # split them out by commas...
    for item in "${items[@]}"; do         # ...iterate over what we got by splitting
      if [[ $item = *=* ]]; then          # ...ignore entries that don't have an =
        settings[${item%%=*}]=${item#*=}  # ...the part before the first = is the key
                                          #    and the rest is the value.
      fi
    done
  fi
done

这可以解读如下:

echo "App name is ${settings[A]}. User is ${settings[U]}."