我有一个程序,但我无法访问代码。该程序读取标准输入。典型的调用看起来像这样 -
> ./.prog
> input-1: <I give input-1>
> input-2: <I give input-2>
.
.
.
> input-n: <I give input-n>
> output
我现在正在做的是将所有参数放在一个名为argsfile.in
的文件中,内容是这样的 -
input-1
input-1
...
input-n
并称之为 -
./ prog&lt; argsfile.in
我想在不使用文件的情况下做同样的事情,就像这样 -
>./prog < "input-1" "input_2" ... "input-3"
我该怎么做?
答案 0 :(得分:3)
简单的解决方案是"here document":
./prog <<"END"
input-1
input-2
input-3
...
END
您可以使用任何字符串而不是END
。如果您想在输入中包含参数扩展等,请使用END
代替"END"
。
在bash
中,您还可以使用"here string":
./prog <<< $'input-1\ninput-2\ninput-3'
借助printf
和命令替换,您可以使其更具可读性:
./prog <<< "$(printf %s\\n "input-1" "input-2" "input-3")"
如果数组中有各种输入行,那么该版本很方便,例如:
./prog <<< "$(printf %s\\n "${files[@]}")"