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包含所有参数 这需要成功解析。
答案 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=$@