[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
eval a=b\ c
From: |
dave |
Subject: |
eval a=b\ c |
Date: |
Mon, 25 May 2015 12:33:53 -0700 (PDT) |
Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64'
-DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-unknown-linux-gnu'
-DCONF_VENDOR='unknown' -DLOCALEDIR='/usr/local/bash/4.3.39/share/locale'
-DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H -I. -I../bash-4.3
-I../bash-4.3/include -I../bash-4.3/lib -g -O2
uname output: Linux s6.millcomputing.com 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed
Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-unknown-linux-gnu
Bash Version: 4.3
Patch Level: 39
Release Status: release
Description:
# Echo the arguments, then execute them as a command.
function echodo() {
if [[ -n $ZSH_VERSION ]] ; then
echo "[ ${(q)@} ]"
eval ${(q)@}
else
echo "[ $@ ]"
eval $@
fi
}
echodo echo b\ c
echodo a=b\ c
echo $a
The result in zsh is:
$ echodo echo b\ c
[ echo b\ c ]
b c
$ echodo a=b\ c
[ a=b\ c ]
$ echo $a
b c
$
Bash gets an error:
$ echodo echo b\ c
[ echo b c ]
b c
$ echodo a=b\ c
[ a=b c ]
bash: c: command not found
$ echo $a
$
I can't find a way to implement echodo in bash. Apparently this is because bash
is unable to expand a variable with quoting intact, as zsh can do with its (q)
expansion flag.
Bash behaves differently in this case::
$ echodo export a=b\ c
[ export a=b c ]
$ echo $a
b
$
Repeat-By:
Fix:
- eval a=b\ c,
dave <=
- Re: eval a=b\ c, Charles Daffern, 2015/05/25
- Re: eval a=b\ c, Linda Walsh, 2015/05/25
- Re: eval a=b\ c, Dennis Williamson, 2015/05/25
- Re: eval a=b\ c, Andreas Schwab, 2015/05/26
- Re: eval a=b\ c, Greg Wooledge, 2015/05/26