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)
然而,这不起作用。我哪里错了?
正如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)