在bash中将参数视为输入流

时间:2012-05-09 18:29:12

标签: bash

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

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

但是&lt;需要一个文件输入流。

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

我认为

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

是你需要的。此过程称为"piping"

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

完成

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分: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
)