Hello. I have noticed that declare -f does not output valid code when a pattern is `esac'.
To use esac as a pattern you need to use the (esac) syntax, but declare -f does not use it, and ends up generating invalid code. a () { case $1 in hi) echo hi ;; (esac) echo esac ;; *) echo something ;; esac } $ declare -f a a () { case $1 in hi) echo hi ;; esac) echo esac ;; *) echo somethig ;; esac } $ declare -f a | bash bash: line 7: syntax error near unexpected token `)' bash: line 7: ` esac)' o/ emanuele6