如何在 bash 脚本中将管道输入包装到 stdout?

问题描述 投票:0回答:3

我想编写一个

bash
脚本,它将用一些文本包装
piped
输入。

基于谷歌搜索并尝试从示例中进行选择。 这是我到目前为止所拥有的,但不起作用:

#!/bin/sh

if readlink /proc/$$/fd/0 | grep -q "^pipe:"; then
    echo "{ "template":{"name":"contact sheet template","root":"root","parameters": ["pages"]},"pages":"
    cat
    echo "}"
fi

我从另一个程序接收一个 JSON 列表作为

piped
输入,我想在将结果发送到下一个程序之前和之后使用上述文本进行输出。

pipe

但是它没有输出任何东西。

有更多

program_1 | wrapper.sh | program_2 > outputfile 专业知识的人可以为我指出正确的方向吗?


    

bash stdout pipe stdin
3个回答
2
投票

myscript.sh

bash



2
投票

echo 'BEFORE' $(cat) 'AFTER'

然后脚本中的命令将简单地从管道继承标准输入

$ other-process | my-script



0
投票

#!/bin/sh # Output preamble cat <<EOF { "template":{"name":"contact sheet template","root":"root","parameters": ["pages"]},"pages": EOF cat # This reads from standard input inherited from your script # Output the closing cat <<EOF } EOF

用柱子包裹:

echo "prefix-$(cat)-suffix"

© www.soinside.com 2019 - 2024. All rights reserved.