4

Я пытаюсь вывести строковые литералы в файл. До сих пор я пытался использовать команду echo, но, к сожалению, я обнаружил, что невозможно вывести '-n', '-e' или '-E' (по крайней мере, без особого усложнения кода). Есть ли альтернативная команда, которую я могу использовать для вывода литеральной строки?

Желательно, чтобы команда была доступна на удаленных компьютерах, к которым я подключаюсь - я пытаюсь обновить файлы на удаленной стороне.

Конечно, я могу просто передать данные со стороны клиента, но если мне нужно, мне нужно повторно подключаться к SSH-серверу после каждой команды.

Обходной путь, который я использую:

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

Что я хочу сделать:

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

Я передаю случайные строки из случайной программы и хочу убедиться, что последняя форма может работать со строками '-e' и '-n' и '-N'

2 ответа2

12

Используйте printf:

printf '%s\n' "-n"
0

Для вашего конкретного примера вы можете использовать строки bash here (см. Man). Вместо этого:

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

вы можете сделать это:

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

Например, попробуйте это:

dd of="-e abc -N def" conv=fsync <<< "-e abc -N def"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .