在 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())
如果你能加上“广告版本”输出我可以给你更详细的答案。
我是 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())
如果你能加上“广告版本”输出我可以给你更详细的答案。