Блокировка файла на (поверх )записи

Предполагая, что ваша программа считывает данные построчно, вы можете сделать в bash следующее.

{
    echo "input 1"
    echo "input 2"
    echo "input 3"
   ...
    echo "input n"
} | my-program

{}создает группу команд, и выходные данные команд в этой группе направляются в my-program.

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

{
cat <<EOM
input 1
input 2
input 3
...
input n
EOM
} | my-program

Обратите внимание, что строка EOMдля завершения heredoc должна быть на отдельной строке, поэтому вам необходимо либо создать группу команд, либо подоболочку, чтобы гарантировать, что команда catне отправляет свой вывод напрямую. в вашу оболочку STDOUT, а вместо этого в канал.

-1
27.11.2020, 20:14
1 ответ

Исправление плохо спроектированного скрипта кажется лучшим вариантом. Любая другая вещь может быть слишком навязчивой.

Однако в некоторых ситуациях это может быть невозможно. Если сценарий очень большой и сложный, это может быть слишком много работы.

Промежуточным решением может быть использование пользователя с самыми низкими привилегиями, а сценарий сборки должен переключаться на этого пользователя в начале. Права доступа к файлам системы сделают все остальное...

1
18.03.2021, 22:46

Теги

Похожие вопросы