在shell脚本中将程序输出分配给变量

时间:2019-10-12 05:40:48

标签: linux shell

我有一个工具(用C语言编写),该工具接受输出文件参数,该工具向其中写入一些输出字符串。

工具-o输出文件名

我想从shell脚本中调用该工具,并将输出字符串分配给变量。

我尝试过:

var = $(tool -o a.txt 1> / dev / null; cat a.txt && rm a.txt)

以上方法有效,但是我想要一个更优雅的解决方案。

P.S:我距离脚本专家还很远。

3 个答案:

答案 0 :(得分:0)

您可以不带-o选项启动该工具

tool

或像William Pursell一样以/ dev / stdout作为文件写入

tool -o /dev/stdout

或简写

tool -o -

答案 1 :(得分:0)

我假设无法更改代码以支持输出到stdout。可能是因为代码正在将其他信息(日志记录)发送到stdout。

您可以使用IO重定向或进程替换来消除从文件中保存/调用数据的需要。构造'>(cat)'参数告诉bash在'tool'和'cat'(将仅打印文件)之间生成管道。

    window.stop();
    (do some staff here..)
    window.location.reload(true);

第一种解决方案更有效(无需额外运行猫...)。第二种解决方案更加紧凑。

答案 2 :(得分:0)

由于您使用的是Linux,因此可以使用values = foo(False) if values: first, second = values