首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果条件匹配,则在awk中执行system()方法

如果条件匹配,则在awk中执行system()方法
EN

Stack Overflow用户
提问于 2022-11-22 13:36:32
回答 1查看 32关注 0票数 0

我试图检查gcc版本,并根据结果执行另一个系统调用(scl enable devtoolset-7 bash)。

下面是我迄今为止尝试过的

代码语言:javascript
复制
gcc --version | awk '/gcc/ && ($3+0)<7.0{print "Current Version",$3,"is less than 7.5" system("scl enable devtoolset-7 bash")}'

我想知道如何在awk中正确地完成这一任务。此外,如果有的话,我愿意接受其他更简单的方法来做上述事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-22 16:06:08

如果不需要调用另一个命令,那么不要让awk生成一个子subshell来调用另一个命令,从而使事情复杂化:

代码语言:javascript
复制
if [[ gcc --version | awk '/gcc/ && ($3+0)<7.0{print "Current Version",$3,"is less than 7.5"; f=1} END{exit !f}' >&2 ]]; then
    scl enable devtoolset-7 bash
fi

注意,您的测试是<7.0,但是消息显示<7.5。您可能希望这样做,以确保一致性:

代码语言:javascript
复制
if [[ gcc --version | awk -v minVer='7.0' '/gcc/ && ($3+0)<(minVer+0){print "Current Version",$3,"is less than",minVer; f=1} END{exit !f}' >&2 ]]; then
    scl enable devtoolset-7 bash
fi

通常,软件版本不能直接作为字符串或数字进行比较,因此您可能需要考虑您的比较。例如,如果您想比较1.2.31.2.4,两者都会在数值比较中被截断为1.2,并且声明相等,但是如果您想要比较两个不同的版本,比如12.35.7,那么在字符串比较中,5.7就会被认为更大。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74533505

复制
相关文章

相似问题

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