There is a parse error in B:

# A

bash$ p=; : "${p:=>(f()(echo "$@") ;f foo)}"; declare -p p
declare -- p=">(f()(echo ) ;f foo)"

bash$ p=; : ${p:=>(f()(echo "$@") ;f foo)}; declare -p p
declare -- p="/dev/fd/63"
foo

bash$ p=; echo "${p:=>(f()(echo "$@") ;f foo)}"
(f()(echo ) ;f foo)


# B

bash$ p=; : "${p:=>(f() { echo "$@"; };f foo)}"; declare -p p
declare -- p=">(f() { echo ; "

bash$ p=; : ${p:=>(f() { echo "$@"; };f foo)}; declare -p p
bash: syntax error near unexpected token `)'

bash$ p=; echo "${p:=>(f() { echo "$@"; };f foo)}"
(f() { echo ; ;f foo)}

Reply via email to