防止屏幕输出heredoc

时间:2014-12-29 13:26:58

标签: php bash output echo heredoc

我正在编写一个bash shell脚本,其目的是为新项目创建一个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来发布此问题。不幸的是没有成功。

研究:

1 个答案:

答案 0 :(得分:4)

您的重定向语法不正确。丢失|

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类似的文件。