shell脚本从参数中提取字符串

时间:2012-07-25 11:54:55

标签: linux shell unix

我正在开发一个shell脚本,它必须从传递的参数中提取字符串。如果我传递的参数如

      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

请帮助我如何在传递的相同案例中提取参数的值?

3 个答案:

答案 0 :(得分:2)

为清楚起见,我更喜欢这样的案例陈述:

while [ $# -gt 0 ]
do
    case $1 in
    a=* ) echo ${1#a=};;
    b=* ) echo ${1#b=};;
    # etc
    esac
    shift
done

答案 1 :(得分:0)

使用双括号匹配水珠图案;在“然后”之前需要分号

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

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

了解更多信息

man bash
/Parameter Expansion

答案 2 :(得分:0)

为什么还要努力解析参数?把事情传递到环境中:

foo

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

然后:

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

$ ./foo
Value of arg1: default value