bash関数で文字列パラメータを渡すには?

bash関数で文字列パラメータを渡すには?

動作する次のコードがあります。

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

しかし、「name」をget_parameterに渡されたパラメータに置き換えたいと思います。

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

しかし、これはうまくいきません。私はどこで間違っていますか?

ベストアンサー1

〜のようにl0b0のヒント、ここでは一重引用符を使用できません。それ以外の例では、sedそれらのどれも使用する必要はありません。もっときれいに見えますgrep

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

いいえecho:

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

最後に2番目のものはありませんsed(ただbash)。

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

おすすめ記事