首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在bash中组合timeout和eval命令

如何在bash中组合timeout和eval命令
EN

Stack Overflow用户
提问于 2015-05-12 18:45:13
回答 4查看 2K关注 0票数 6

要执行存储在变量中的命令,请使用eval命令:

代码语言:javascript
运行
复制
└──> a="echo -e 'a\nb' | wc -l"
└──> eval $a
2

但是如何将其与timeout命令结合使用呢?我尝试了下面的方法,它给出了错误的输出:

代码语言:javascript
运行
复制
└──> timeout 10 $a
'a
b' | wc -l

下面的代码会给我带来错误:

代码语言:javascript
运行
复制
└──> timeout 10 "$a"
timeout: failed to run command `echo -e \'a\\nb\' | wc -l': No such file or directory

└──> timeout 10 $(eval $a)
timeout: failed to run command `2': No such file or directory

└──> timeout 10 $(eval "$a")
timeout: failed to run command `2': No such file or directory

问题也可能是:我如何确保下面的命令被正确执行?

代码语言:javascript
运行
复制
timeout 10 "$PROGRAM" "$OPT1" "$OPT2" ...
EN

回答 4

Stack Overflow用户

发布于 2019-02-11 11:40:56

简单:

代码语言:javascript
运行
复制
a="echo -e 'a\nb' | wc -l"
eval timeout 10 $a

输出:

代码语言:javascript
运行
复制
2
票数 2
EN

Stack Overflow用户

发布于 2015-05-13 03:38:25

这将会起作用

代码语言:javascript
运行
复制
if timeout "$PROGRAM" "$OPT1" "$OPT2" ... ; then
    echo Program ran successfully
else
    echo Program terminated due to timeout
fi
票数 1
EN

Stack Overflow用户

发布于 2016-02-11 20:16:11

如果它是关于将命令保存在变量中,这将会起作用,尽管我不知道这是否是一种“适当的bash方式”:

command.sh:

代码语言:javascript
运行
复制
#!/bin/bash
echo -e 'a\nb' | wc -l

run.sh:

代码语言:javascript
运行
复制
#!/bin/bash
a="command.sh"
timeout 10 ./$a
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30188547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档