2

是否有任何 bash 技巧允许在命令行中将一些参数提供给通过输入流获取其输入的程序?像这样的东西:

program < 'a=1;b=a*2;'

但是 < 需要一个文件输入流。

4

4 回答 4

6

对于非常短的 here-documents,还有 here-strings:

program <<< "a=1;b=a*2"
于 2012-05-09T18:34:35.500 回答
2

我认为

echo 'a=1;b=a*2;' | program

是你需要的。这个过程称为“管道”

作为旁注:做相反的事情(即管道其他程序输出作为参数)可以用xargs

于 2012-05-09T18:30:34.347 回答
1

echo效果很好。另一个答案是 Here-documents [1]

program <<EOF
a=1;b=a*2;
EOF

当我在一行上有一件非常短的东西时,我使用 echo,当我有需要换行符的东西时,我使用 heredocs。

[1] http://tldp.org/LDP/abs/html/here-docs.html

于 2012-05-09T18:33:27.597 回答
0
shopt -s expand_aliases

alias 'xscript:'='<<:ends'

xscript: bc | anotherprog | yetanotherprog ...

    a=1;b=a*2;

:ends

我花了一年时间破解这个。伙计们,这里有高级 bash 脚本。请给予应有的尊重:)

我称这个小“diddy”xscript 是因为您可以在 here 文档中扩展 bash 变量和替换。

alias 'script:'='<<":ends"'

上述版本不扩展替换。

xscript: cat

The files in our path are: `ls -A`

:ends

script: cat

The files in our path are: `ls -A`

:ends

我还没说完!

source <(xscript: cat
    echo \$BASH "hello world, I'mma script genius!"
    echo You can thank me now $USER
:ends
)
于 2012-05-09T21:53:05.237 回答