$ freebsd-version
10.3-RELEASE-p17
$
portinstall() {
port="$1"; shift
env="[email protected]"
#1
env "[email protected]" printenv | grep -E '^WITH(OUT)?='
#2
env "$env" printenv | grep -E '^WITH(OUT)?='
#3
env "$*" printenv | grep -E '^WITH(OUT)?='
#4
env [email protected] printenv | grep -E '^WITH(OUT)?='
#5
env $* printenv | grep -E '^WITH(OUT)?='
}
portinstall foo/bar WITH='baz xyzzy' WITHOUT='quux'
のみ#1作品、その出力#2とBourneシェル空白複雑
WITHOUT=quux
WITH=baz xyzzy
、#3(WITHは、単に1つの変数 "= quux WITHOUTバズのXYZZY" である):
WITH=baz xyzzy WITHOUT=quux
#4で
、#5
env: xyzzy: No such file or directory
私の主な質問は、なぜ#1作品ですが、一見同等の#2はありませんか?
'env $ @ printenv'の問題は二重引用符が不足しています。' env'は複数の引数(複数)で動作しますので、誤りです。二重引用符で修正する必要があります! – Inian
@Inian、yup、#4-5はかなり自明ですが、私は完全性のためにそれらを列挙しました。私の混乱は#1-2とある。 – Rihad