我试图检查gcc版本,并根据结果执行另一个系统调用(scl enable devtoolset-7 bash)。
下面是我迄今为止尝试过的
gcc --version | awk '/gcc/ && ($3+0)<7.0{print "Current Version",$3,"is less than 7.5" system("scl enable devtoolset-7 bash")}'我想知道如何在awk中正确地完成这一任务。此外,如果有的话,我愿意接受其他更简单的方法来做上述事情。
发布于 2022-11-22 16:06:08
如果不需要调用另一个命令,那么不要让awk生成一个子subshell来调用另一个命令,从而使事情复杂化:
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。您可能希望这样做,以确保一致性:
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.3与1.2.4,两者都会在数值比较中被截断为1.2,并且声明相等,但是如果您想要比较两个不同的版本,比如12.3和5.7,那么在字符串比较中,5.7就会被认为更大。
https://stackoverflow.com/questions/74533505
复制相似问题