понедельник, 17 октября 2011 г.

Экранирование в bash, кто знает?

Есть такой скриптик в bash:

#!/bin/bash
set -x
a () 
   echo $1 
}

b () 
   a "--some-flag='param1 param2,param3'" 
}
b


в функции a () echo вызывается как:
echo '--some-flag='\''param1' 'param2,param3'\'''

как сделать чтобы параметры которые передаются в a () не экранировались?

т.е. чтобы echo вызывался вот так:
echo --some-flag='param1 param2,param3'

т.е. чтобы параметры передавались как есть ?

1 коммент.:

  1. АнонимныйNov 22, 2011 02:04 PM

    Не вполне понятна задача.
    Вот так не пойдёт?

    set -x
    a ()
    {
    echo $@
    }

    b ()
    {
    a --some-flag=param1 param2,param3
    }
    b



    Или так:

    #!/bin/bash
    set -x
    a ()
    {
    echo "$1"
    }

    b ()
    {
    a "--some-flag=param1 param2,param3"
    }
    b

    ?

    ОтветитьУдалить