Я пишу скрипт оболочки bash, целью которого является создание php-скелета для новых проектов.
Чтобы создать определенные документы php во вновь созданной структуре каталогов, я использую HEREDOC с тоннами кодов.
sudo tee $projectname/www/index.php <<- EOF | > null
<?php
ob_start();
require_once 'inc/header.inc';
ob_end_flush();
?>
EOF
## Create header.inc
sudo tee $projectname/www/inc/header.inc <<- EOF 1>&2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
....
EOF
Проблема в:
Все строки HEREDOC отображаются на экране. Это действительно не то, что я хочу, это выглядит очень грязно.
Итак, я попытался выдать это, перенаправив вывод на null
а также /dev/null
, К сожалению, без успеха.
Исследование:
Ваш синтаксис перенаправления неверен. Потерять |
sudo tee $projectname/www/index.php <<-EOF >/dev/null
Другая попытка перенаправления у вас есть 1>&2
просто перенаправит стандартный вывод на стандартную ошибку, которая (как правило) в любом случае попадает на ваш экран. Это полезно, но не для того, что вы пытаетесь достичь.
Лучше было бы гигиенически создать проект самостоятельно и использовать отдельную инфраструктуру развертывания (контроль версий и) для публикации рабочей версии, только когда у вас есть что-то подходящего качества и полноты. Тогда вам не нужно sudo
и тогда тебе не нужно tee
,
cat <<-EOF >$projectname/www/index.php
sudo tee file >/dev/null
трюк немного антипаттерн, чтобы позволить вам писать файлы, как с cat
когда вы используете sudo
,
Других решений пока нет …