我正在编写一个bash shell脚本,其目的是为新项目创建一个php框架。
为了在新创建的目录结构中创建某些php文档,我使用了带有大量代码行的herdocs。。
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
来发出这个问题。不幸的是没有成功。研究:
Preventing output from commands in Batch
Echo in heredoc / nowdoc syntax
Outputting variable within Heredoc
http://wiki.bash-hackers.org/syntax/redirection
最佳答案
重定向语法不正确。失去|
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
的文件。关于php - 防止屏幕输出heredoc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27689811/