LINUX.ORG.RU

BASH траблы с echo


0

0

Исходная ситуация: встроенная система (router) с ограниченым набором команд. Имеется возможность эти команы выполнять удаленно. Надо перенести конфиг на router. До последнкго времени конфиг переносился так:

######code######
config = '''#<< password_file
passFileLineCount='1'
passFileLineCount0='root:$1$$CoERg7ynjYLsj2j4glJ34.:0:0:root:/root:/bin/sh'
#>> password_file

#<< default_wan_iface
default_wan_conn_cpeId="1"
default_wan_conn_pcpeId="1"
default_wan_conn_connName="WAN1"
default_wan_conn_conf_connName="WAN1"
default_wan_conn_iface="nas0"
#>> default_wan_iface'''

X_DLINK_COM_RunCommand({'RunCommands':
	["echo '%s' > /flash/part_1 && echo ok" %c2]
	)
#####code#######

Все поломалось когда в конфиге значение passFileLineCount0 стало выделяться не '"' а "'" . На выходе (в /flash/part_1 знаки "'" просто пропущены)

Собственно вапрос: как правильно маскировать "'", чтобы echo его не пропускало?  
anonymous

как вариант:

config='''#<< password_file
passFileLineCount="1"
passFileLineCount0="root:$1$$CoERg7ynjYLsj2j4glJ34.:0:0:root:/root:/bin/sh"
#>> password_file

#<< default_wan_iface
default_wan_conn_cpeId="1"
default_wan_conn_pcpeId="1"
default_wan_conn_connName="WAN1"
default_wan_conn_conf_connName="WAN1"
default_wan_conn_iface="nas0"
#>> default_wan_iface'''

config=${config//'"'/"'"}

Lucky ★★
()
Ответ на: комментарий от Lucky

\' не работает

второй вариант тоже не работает, так как нужно выдержать именно тот формат, который был в первоначальном конфиге, то есть он должен посимвольно совпадать с приведенным выше примером.

anonymous
()
Ответ на: комментарий от rab_boziy

> echo 'hallo="world" hallo2='\''world2'\'''

мне кажется, или последние '' действительно лишние? =)

Cy6erBr4in ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.