Открыть файл для записи. В оболочке это делается с помощью перенаправления вывода. Вы можете перенаправить стандартный вывод оболочки, поместив перенаправление на встроенный exec
без аргументов.
set -e
exec >shell.out # exit if shell.out can't be opened
echo "This will appear in shell.out"
Убедитесь, что вы не установили опцию noclobber
(которая полезна в интерактивном режиме, но часто не используется в сценариях). Используйте >
, если вы хотите обрезать файл, если он существует, и >>
, если вы хотите добавить вместо него.
Если вы хотите только проверить разрешения, вы можете запустить : >foo.out
, чтобы создать файл (или обрезать его, если он существует).
Если вы хотите, чтобы только некоторые команды записывали в файл, откройте его в другом дескрипторе, а затем перенаправьте при необходимости.
set -e
exec 3>foo.out
echo "This will appear on the standard output"
echo >&3 "This will appear in foo.out"
echo "This will appear both on standard output and in foo.out" | tee /dev/fd/3
(/dev/fd
не поддерживается везде; он доступен по крайней мере в Linux, * BSD, Solaris и Cygwin.)