#!/bin/bash
set -x
a ()
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'
т.е. чтобы параметры передавались как есть ?
Не вполне понятна задача.
ОтветитьУдалитьВот так не пойдёт?
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
?
Я бы (Аноним #2) предложил бы разбить задачу на две: распарсить твою строку на
ОтветитьУдалитьflag (=--some-flag) & flag_val (=param param2,param3). Как это сделать и не изобретать велосипед - милости просим в 'configure' скриптик в корневой папочке Qemu. Они парсят там параметры - я бы попробовал. а потом передавал бы два параметра и конкатенировал. хотя, конечная задача не ясна... так что, не обессудьте за неточный ответ