1

我想编写一个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专业知识的人可以为我指明正确的方向吗?

4

2 回答 2

2

您的意思是您的脚本正在从管道读取标准输入,例如

$ other-process | my-script

?

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

#!/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
于 2013-02-27T14:15:22.810 回答
2

我个人会以这种方式搜索:

脚本文件

echo 'BEFORE' $(cat) 'AFTER'
于 2013-02-27T13:12:05.610 回答