URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 86578
[ Назад ]

Исходное сообщение
"кавычки"

Отправлено tyn , 13-Сен-09 15:10 
есть команда, которая имеет в себе кавычки как двойные, так и одинарные, например:

dmidecode|awk 'BEGIN{a=0}{if($0=="Memory Array Mapped Address" || a==1){a=1; if($0==""){a=0}; print $0}}'

объясню что она делает, что бы вам не приходилось ее анализировать: мы ждем пока в пайп упадет строка: "Memory Array Mapped Address" и выводим ее и последующие строки, до тех пор, пока не встретим пустую строку, т.е. вырезаем только нужный блок из всего вывода dmidecode:

Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x001FFFFFFFF
        Range Size: 8 GB
        Physical Array Handle: 0x0034
        Partition Width: 0

как сделать нечто такое:
ssh server 'command', где вместо command приведенная выше команда (т.е. в awk есть одинарные кавычки и в ssh есть одинарные кавычки)

первое, что логически напрашивается, это экранирование обратным слешем одинарных кавычек:
ssh server 'dmidecode|awk \'BEGIN{a=0}{if ( $0=="Memory Array Mapped Address" || a==1 ) {a=1 ; if ( $0=="" ) {a=0} ; print $0}}\''

но тогда мы получаем:
в csh: Unmatched '.
в bash: bash: syntax error near unexpected token `('

извиняюсь если через чур сумбурно и запутано.


Содержание

Сообщения в этом обсуждении
"кавычки"
Отправлено XAnder , 13-Сен-09 15:33 
Внутренние одинарные кавычки попробуйте заменить на '"'"'. Некрасиво, но работает.

Например:

echo 'qq"ww'"'"'ee'"'"'rr"tt'
qq"ww'ee'rr"tt


"кавычки"
Отправлено tyn , 13-Сен-09 15:38 
благодарю, это то, что я искал