在Shell脚本中解析命令行参数

时间:2018-12-23 08:43:27

标签: shell

shell命令行参数列表$ @不打印任何内容。因此,我在ALL_ARGS_PASSED中接受了args并将其发送给函数。即使那样,我也无法解析参数。

解析$ @(所有命令行参数列表)

在ALL_ARGS_PASSED中设置它们并尝试在函数中解析

ALL_PASSED_ARGS="$@"

get_args_rethink()
{
   #echo $ALL_PASSED_ARGS
   echo "All args passed $@"
   for arg in $ALL_PASSED_ARGS
   do
       KEY=$(echo $arg | cut -f1 -d=)
       VALUE=$(echo $arg | cut -f2 -d=)

       case "$KEY" in
           GIT_USERNAME)                     READ_GIT_USERNAME=${VALUE} ;;
           GIT_PASSWORD)                     READ_GIT_PASSWORD=${VALUE} ;;
           *)                                echo "PLEASE SEE USAGE"  ;;
       esac
   done
}

get_args_rethink aa=1 bb=2
echo "$READ_GIT_USERNAME first parameter"
echo "$READ_GIT_PASSWORD second parameter"

期望ALL_ARGS_PASSED包含所有参数 这需要成功解析。

1 个答案:

答案 0 :(得分:1)

函数可以传递参数。因此$ @内部函数成为函数args而不是命令行中的shell参数。

ALL_ARGS_PASSED =“ $ @”错误$$已被引用为参数列表。如果再次引用,它将变成单个字符串,因此只有第一个参数被解析,剩下的就是值。

“” aa = 1 bb = 2 cc = 3“” 因此,如果您解析此aa为键,并且值为“ 1 bb = 2 cc = 3”

所以解决方案是不引用ALL_ARGS_PASSED

ALL_PASSED_ARGS=$@