Bash
如何在bash函式上傳遞字元串參數?
我有這個有效的程式碼:
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}=[^&]*" }