所有
我正在尝试编写一个shell脚本(让我们称之为mysh),它调用另一个shell脚本(让我们将其命名为原始脚本)。
origin脚本采用几个参数,语法如下:
./origin.sh /A=appname,/U=admin,/LL=ADMINISTRATOR
在mysh脚本中,将调用该原始脚本,有人可以让我知道如何在shell脚本中解析这些参数(/ A,/ U,/ LL)吗?通过定义变量?
这应该是一项简单的任务,请以简单的方式思考:D
感谢所有
答案 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]}."