су и труба с переменными - PullRequest
       11

су и труба с переменными

0 голосов
/ 29 декабря 2011

Я пишу сценарий оболочки и хотел бы передать STDOUT в файл в команде su.Выходной файл должен принадлежать другому пользователю, поэтому следует использовать su.Однако я не могу заставить pipe работать с su, когда выводимый текст и имя выходного файла переменные (см. Пример ниже).

Мой обходной путь - это конвейерк файлу без использования su, затем прикрепите этот файл к нужному пользователю.Однако мне было интересно, есть ли «одношаговый» способ сделать это с помощью su?

Пример (только для иллюстрации):

#!/bin/sh

message="Hello World";
file="/tmp/HelloWorld.txt";

su someuser -c 'echo "${message}" > "${file}"';

Если я поставлю ${file} в двойномкавычки, как в этом примере, я получаю следующую ошибку:

bash: : No such file or directory

Если я удаляю двойные кавычки вокруг ${file}, я получаю следующую ошибку:

bash: ${file}: ambiguous redirect

1 Ответ

1 голос
/ 29 декабря 2011

try su someuser -c "echo \"${message}\" > ${file}";

Переменные внутри одинарных кавычек не раскрываются.

...