Fixing bash script bogosity - help?

Ignacio Vazquez-Abrams ivazqueznet at gmail.com
Tue Apr 28 07:01:51 EDT 2009


On Tue, 2009-04-28 at 12:38 +0200, Martin Langhoff wrote:
> On Tue, Apr 28, 2009 at 12:03 PM, Ignacio Vazquez-Abrams
> <ivazqueznet at gmail.com> wrote:
> > But if you're willing to let go of this futile quest to keep $CMD a
> > string then you'll find that it can be done:
> 
> Your example doesn't work. I don't care about keeping $CMD as a
> string, I think you are misunderstanding the problem. We need to build
> it as a string to provide it as a single parameter value. This is
> because we want to run the command with all properly escaped params
> under runuser.

Which part of the following doesn't work?

ctl()
{
    ERL_COMMAND=(
        "$ERL"
        "$NAME" ejabberctl
        -noinput
        -pa "$EJABBER_EBIN"
        -s ejabber_ctl -extra "$ERLANG_NODE" "$@"
    )
    W=`whoami`
    if [ "$W" != "ejabberd" ]; then
        /sbin/runuser -s /bin/bash - ejabberd -c "${ERL_COMMAND[@]}"
        result=$?
    else
        bash -c "${ERL_COMMAND[@]}"
        result=$?
    fi

    # replace remainder of function here
}

-- 
Ignacio Vazquez-Abrams <ivazqueznet at gmail.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <http://lists.laptop.org/pipermail/devel/attachments/20090428/419553d9/attachment.sig>


More information about the Devel mailing list