есть команда, которая имеет в себе кавычки как двойные, так и одинарные, например: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 `('извиняюсь если через чур сумбурно и запутано.
Внутренние одинарные кавычки попробуйте заменить на '"'"'. Некрасиво, но работает.Например:
echo 'qq"ww'"'"'ee'"'"'rr"tt'
qq"ww'ee'rr"tt
благодарю, это то, что я искал