EOF inesperado ao usar o sinalizador '-c' no sudo

0

Eu tenho tentado pegar o sudo sozinho e fiquei preso nesta edição paralela por dias.

Ao executar o comando abaixo, eu posso produzir a informação correta corrigida com os dois atributos (D, 44 .... e E, 44 ....) no arquivo1.txt como linhas separadas antes de 'TESTINFORMATION' .

sed '/TESTINFORMATION/i\attribute="D,44444,44444" \nattribute="E,44444,44444"' file.txt >> file1.txt

No entanto, se eu tentar executar o comando como passado para o parâmetro 'c' para o sudo, continuo recebendo um EOF inesperado:

sudo -S su - root -c 'sed \'/TESTINFORMATION/i\attribute="D,44444,44444" \nattribute="E,44444,44444"\' file.txt >> file1.txt'

Eu observei os apóstrofos pareados e os caracteres que escaparam, mas ainda não vi meu erro.

Qual é a prática recomendada para solucionar problemas de EOFs?

Solução: eu tentei a solução da DopeGhoti e a solução da steeldriver e ambos funcionaram. Um exemplo de solução de trabalho foi:

sudo -S su - root -c '\''sed \'/TESTINFORMATION/i\attribute="D,44444,44444" \nattribute="E,44444,44444"\'\'' file.txt >> file1.txt'

Obrigado a todos pelo seu tempo:)

    
por Shepherd 10.01.2018 / 16:41

1 resposta

1

Seu problema é que você tem uma string 'strong entre aspas' que está tentando incorporar em 'aspas strongs'. Isso não funcionará. A resposta feia é escapar das citações internas; A resposta provavelmente melhor e mais fácil de gerenciar é pegar seu comando lexically complex sed , colocá-lo em um script e executar o próprio script com sudo , e. g. sudo /path/to/sed_script.sh .

Usar sudo para executar su -S su - root -c 'somecommand' é uma maneira muito indireta de muito executar apenas sudo somecommand .

    
por 10.01.2018 / 16:53