标签: heredoc

在JavaScript中创建多行字符串

我在Ruby中有以下代码.我想将此代码转换为JavaScript.什么是JS中的等效代码?

text = <<"HERE"
This
Is
A
Multiline
String
HERE
Run Code Online (Sandbox Code Playgroud)

javascript string heredoc multiline

2412
推荐指数
27
解决办法
137万
查看次数

697
推荐指数
7
解决办法
36万
查看次数

"猫<< EOF"如何在bash中运作?

我需要编写一个脚本来输入程序的多行输入(psql).

经过一段谷歌搜索后,我发现以下语法有效:

cat << EOF | psql ---params
BEGIN;

`pg_dump ----something`

update table .... statement ...;

END;
EOF
Run Code Online (Sandbox Code Playgroud)

这正确地构造了多行字符串(从包含BEGIN;END;包含),并将其作为输入进行管道输入psql.

但是我不知道它是如何/为什么有效的,有人可以解释一下吗?

我主要是指cat << EOF,我知道>文件的输出,>>附加到文件,<从文件读取输入.

究竟做<<了什么?

它有一个手册页吗?

linux bash scripting heredoc

548
推荐指数
9
解决办法
82万
查看次数

如何在Bash中为变量分配heredoc值?

我有这个多行字符串(包括引号):

abc'asdf"
$(dont-execute-this)
foo"bar"''
Run Code Online (Sandbox Code Playgroud)

如何在Bash中使用heredoc将其分配给变量?

我需要保留换行符.

我不想逃避字符串中的字符,这会很烦人......

bash heredoc

344
推荐指数
8
解决办法
16万
查看次数

在PHP中使用Heredoc有什么好处?

在PHP 中使用Heredoc有什么好处,你能展示一个例子吗?

php heredoc

190
推荐指数
4
解决办法
12万
查看次数

在单行命令行中执行Python多行语句

我正在使用Python -c来执行单行循环,即:

$ python -c "for r in range(10): print 'rob'"
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,如果我在for循环之前导入模块,则会出现语法错误:

$ python -c "import sys; for r in range(10): print 'rob'"
  File "<string>", line 1
    import sys; for r in range(10): print 'rob'
              ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

将此作为单行程序对我来说很重要,这样我就可以将它包含在Makefile中.

python shell command-line heredoc

178
推荐指数
10
解决办法
14万
查看次数

在bash heredoc中使用变量

我正在尝试在bash heredoc中插入变量:

var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF
Run Code Online (Sandbox Code Playgroud)

这不符合我的预期(按$var字面意思处理,不进行扩展).

我需要使用,sudo tee因为创建文件需要sudo.做类似的事情:

sudo cat > /path/to/outfile <<EOT
my text...
EOT
Run Code Online (Sandbox Code Playgroud)

不起作用,因为>outfile在当前shell中打开文件,而不使用sudo.

variables bash heredoc sh

175
推荐指数
3
解决办法
10万
查看次数

用于管道heredoc的多行语法; 这便携式吗?

我熟悉这种语法:

cmd1 << EOF | cmd2
text
EOF
Run Code Online (Sandbox Code Playgroud)

但刚刚发现bash允许我写:

cmd1 << EOF |
text
EOF
cmd2
Run Code Online (Sandbox Code Playgroud)

(heredoc用作cmd1的输入,cmd1的输出用于cmd2).这似乎是一个非常奇怪的语法.它是便携式的吗?

bash shell pipe heredoc sh

122
推荐指数
4
解决办法
3万
查看次数

Javascript heredoc

我在JavaScript中需要类似heredoc的东西.你有什么想法吗?我需要跨浏览器功能.

我找到了这个:

heredoc = '\
<div>\
    <ul>\
        <li><a href="#zzz">zzz</a></li>\
    </ul>\
</div>';
Run Code Online (Sandbox Code Playgroud)

我认为这对我有用.:)

javascript heredoc

104
推荐指数
10
解决办法
5万
查看次数

在HEREDOC字符串中调用PHP函数

在PHP中,HEREDOC字符串声明对于输出html块非常有用.你可以通过在$前面加上变量来解析变量,但是对于更复杂的语法(比如$ var [2] [3]),你必须把你的表达式放在{}括号中.

在PHP 5中,这可能实际上使函数调用中的{}一HEREDOC字符串中括号,但你必须要经过一些工作.函数名称本身必须存储在变量中,您必须将其称为动态命名函数.例如:

$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这比仅仅更麻烦:

$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
Run Code Online (Sandbox Code Playgroud)

除了第一个代码示例之外还有其他方法,例如突破HEREDOC来调用函数,或者反转问题并执行以下操作:

?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
Run Code Online (Sandbox Code Playgroud)

后者的缺点是输出直接放入输出流(除非我使用输出缓冲),这可能不是我想要的.

所以,我的问题的实质是:有更优雅的方法来解决这个问题吗?

根据回复进行编辑:看起来某种模板引擎看起来确实会让我的生活变得更轻松,但这需要我基本上颠倒我常用的PHP风格.这不是一件坏事,但它解释了我的惯性......我想找出让生活变得更轻松的方法,所以我现在正在研究模板.

php string heredoc

88
推荐指数
10
解决办法
7万
查看次数

标签 统计

heredoc ×10

bash ×5

javascript ×2

php ×2

sh ×2

shell ×2

string ×2

command-line ×1

linux ×1

multiline ×1

pipe ×1

python ×1

scripting ×1

variables ×1