在 Bash 脚本中将命令的输出保存在变量中

save an output of a command in a variable in Bash scripting

我是 bash 脚本编写的初学者,我正在尝试执行以下操作:

命令 ads2 version returns 以下信息:

如你所见,命令ads2 version 打印出多条信息。

1- 但是,我只想获取版本号以便打印并保存它而不是显示所有内容

2- 此外,DDA 会显示 ads2 是否已激活,如图所示,DDA 有一个未知数,这意味着它未激活。那么如何在 if 语句中对其进行评估!

您可以将 ads2 version 的输出通过管道传输到 grep,然后再传输到 cut 以提取与版本号对应的字段:

$ version="$(ads2 version | grep 'ADS2 version' | cut -d' ' -f 3)"

或更好地使用 awk 代替:

$ version="$(ads2 version | awk '/ADS2 version/{print }')"

然后版本将存储在 version shell 变量中:

$ echo $version
4.8.10

至于你编辑的后续问题,你可以这样做:

if [ "$(ads2 version | grep DDA | grep '(unknown)')" ]; then
    echo "Not activated"
else
    echo "Activated"
fi

也就是说,您将自己限制在包含文本 DDA 的行,然后检查该行是否包含文本 (unknown)。如果是这样,它没有被激活;否则就是。

您可以使用 os 命令和正则表达式输出您想要的内容:

process = os.popen('ads2 version')
output = process.read()
res = re.findall(r"ADS2 version: (.*)", output.decode())

如果你能加上“广告版本”输出我可以给你更详细的答案。