Uma alternativa de comando do shell Unix ao eco

4

Estou tentando produzir literais de string para um arquivo. Até agora eu tenho tentado usar o comando echo, mas infelizmente eu descobri que é impossível produzir '-n', '-e' ou '-E' (pelo menos não sem complicar muito o código). Existe algum comando alternativo que eu possa usar para produzir uma string literal?

É preferível que o comando esteja disponível nas máquinas remotas às quais estou me conectando - estou tentando atualizar arquivos no lado remoto.

É claro que posso simplesmente passar os dados do lado do cliente, mas, se precisar, preciso reconectar ao servidor SSH após cada comando.

A solução alternativa que estou usando:

echo alabama | ssh server dd of=/tmp/alabama conv=fsync
echo china | ssh server dd of=/tmp/china conv=fsync

O que eu quero fazer:

(echo 'echo alamaba | dd of=/tmp/alabama conv=fsync'
echo 'echo china | dd of=/tmp/china conv=fsync') | ssh server /bin/sh

Estou passando strings aleatórias de um programa aleatório, e quero garantir que o último formulário possa funcionar com as strings '-e' e '-n' e '-N'

    
por Moon Soon 01.04.2012 / 15:51

2 respostas

11

Use printf :

printf '%s\n' "-n"
    
por 01.04.2012 / 16:15
0

Para o seu exemplo em particular, você pode usar bash here strings (veja man). Em vez disso:

echo alamaba | dd of=/tmp/alabama conv=fsync

você pode fazer isso:

dd of=/tmp/alabama conv=fsync <<< alabama

Por exemplo tente isso:

dd of="-e abc -N def" conv=fsync <<< "-e abc -N def"
    
por 01.04.2012 / 16:12