On Wed, Nov 19, 2014 at 11:05:51PM +0100, Piotr Grzybowski wrote: > On Wed, Nov 19, 2014 at 10:51 PM, Eduardo A. Bustamante López > <dual...@gmail.com> wrote: > > is_defined3() { > > { declare -p -- "$1" && ! declare -fp -- "$1"; } 2>/dev/null >&2 > > } > > I dont know, but looks like a reusable code to me.
No, it fails if the argument is both a function AND a variable. imadev:~$ is_defined3() { { declare -p -- "$1" && ! declare -fp -- "$1"; } 2>/dev/null >&2; } imadev:~$ declare -p foo bash: declare: foo: not found imadev:~$ is_defined3 foo ; echo $? 1 So far, so good. But.... imadev:~$ foo() { echo foo; } imadev:~$ foo=bar imadev:~$ is_defined3 foo ; echo $? 1