Bash

如何在bash函式上傳遞字元串參數?

  • December 25, 2021

我有這個有效的程式碼:

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

但我想用傳遞給 get_parameter 的參數替換“名稱”

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

然而,這不起作用。我哪裡錯了?

引用:簡而言之,變數不會被'single-quoted'字元串中的值替換(又名“變數替換”)。您需要使用 、 或 中的"double quotes"任何$'dollar quotes'一個

<<EOF
here strings
EOF

正如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"
}

最後,沒有第二個sed(只是bash):

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

引用自:https://unix.stackexchange.com/questions/21167