bash 中的原始多行字符串?

Wes*_*cts 3 bash python

有没有办法在 bash 中获取未解释的字符串 - 它可以包括单引号和双引号以及 Bang ! 等等。 ?

我想做类似的事情

#!/bin/bash

echo -e "Line One\nLine Two\nLine three" | python -c """
import sys
for line in sys.stdin.readlines():
  print "STDIN: %s" %line
""" | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

问题是零标准输入:打印行 - 标准输入没有通过管道传输到 python 程序。

这是一个用例:注意输入大小可以是低 GB 的大小:

cat "my10GBfile.dat" | python -c """ ..等

现在在那里使用 HEREDOC .eg

#!/bin/bash

echo -e "Line One\nLine Two\nLine three" | python<<-HERE
some

multiline
python 
program
HERE
| awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

存在标准输入被合并的问题 - 因此输入丢失。

我真正想要的是 bash 中未解释的多行字符串。

Den*_*nis 5

Heredoc确实提供了一个未解释的多行字符串(至少如果你引用了分隔符);没有(简单)的方式来访问它的内容。

由于 STDIN 已被用于其他用途,您可以创建一个新的文件描述符以将 heredoc 的内容传递给 python:

exec 3<<'HERE'
import sys
print "Line Zero!\n"
for line in sys.stdin:
    print line
HERE
echo -e "Line One\nLine Two\nLine Three" | python /dev/fd/3
Run Code Online (Sandbox Code Playgroud)