I have an ugly function I wrote for zsh that does this:

Sat 14:17:25 ip2 yost /Users/yost
1 634 Z% echo-quoted xyz \$foo  'a b c ' '\n'
xyz '$foo' 'a b c ' '\n'
Sat 14:17:53 ip2 yost /Users/yost
0 635 Z% 

It would be nice if there were an easy way to do this in bash.

Here is my use case:

echo-command() {
        echo        -n 1>&2 "[ "
        echo-quoted -n 1>&2    $@
        echo           1>&2     " ]"
}

echodo() {
        echo-command $@
        eval "$@"
}

1 652 Z% echodo sleep 1     
[ sleep 1 ]
0 653 Z% 

This is a bit of a hack because when I need to use a pipe character, for 
example, I have to quote it, and that gets echoed in a way that’s wrong for 
this purpose.

0 656 Z% echodo echo abc \| sed 's,b,_,'
[ echo abc '|' sed s,b,_, ]
a_c
0 657 Z% 

A builtin that does my ‘echodo’ without having to escape command-line 
metacharacters is what I really want.

Is there such a thing?

Reply via email to