如何在bash函数上传递字符串参数?

mic*_*con 3 bash parameter string function

我有这个有效的代码:

get_parameter ()
{
   echo "$query" | sed -n 's/^.*name=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"
}
Run Code Online (Sandbox Code Playgroud)

但我想用我传递给 get_parameter 的参数替换“名称”

get_parameter ()
{
   echo "$query" | sed -n 's/^.*$1=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"
}
NAME=$( get_parameter name )
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用。我哪里错了?

roz*_*acz 5

正如l0b0 所指出的,这里不能使用单引号。除此之外,在您的示例中,您不必使用它们sed。它看起来更干净grep

get_parameter ()
{
   echo "$query" | grep -o "${1}=[^&]*" | sed "s/%20/ /g"
}
Run Code Online (Sandbox Code Playgroud)

没有echo

get_parameter ()
{
   <<< "$query" grep -o "${1}=[^&]*" | sed "s/%20/ /g"
}
Run Code Online (Sandbox Code Playgroud)

最后,没有第二个sed(只是bash):

get_parameter ()
{
   <<< "${query//%20/ }" grep -o "${1}=[^&]*"
}
Run Code Online (Sandbox Code Playgroud)