2014-08-29 4 views
0

Я пытаюсь использовать команду send с sed, который использует переменную. У вас проблемы с безопасностью.Отправить с помощью sed с переменной

send "sed "1i//$VAR" /file > /tmp/out\r" 

Если я использую команду отдельно патч в (который добавляет текст $ VAR в качестве первой строки файла), она работает:

sed "1i//$VAR" /file > /tmp/out 

Но я не могу понять, как избежать в пределах отправить команду.

+1

Это для 'expect'? –

ответ

2

Внутри двойных кавычек, одиночные кавычки теряют особый смысл, так что вам, возможно, потребуется:

send "sed '1i//$VAR' /file > /tmp/out\r" 

На локальной машине, то $VAR помещается в команду. На удаленном компьютере команда sed заключена в одинарные кавычки, защищая ее от дальнейшего злоупотребления.

2

Это должно работать:

send "sed '1i//$VAR' /file > /tmp/out\r" 

Только типа вопросов внешних кавычек для определения того, интерполируют переменные.

Смежные вопросы