【发布时间】:2022-11-01 13:04:38
【问题描述】:
我非常想找到一种方法来自动清除我的测试服务器中的多个应用程序。我将服务器客户端fortifyclient 安装在一个测试吊舱内,该吊舱可以与服务器通信。所以流程:
- 列出我所有的应用程序并 grep 他们所有的应用程序版本 ID
- 清除那些应用程序版本 ID
- 完成
因此,作为第一步,我在 pod 中设置了我的环境变量。
# set env var locally export token=value export scandate=value export sscurl=value export dir=/test/bin/./fortifyclient这是我下面的
purge.sh#!/bin/bash # List app, fetch their appID's then purge based on date for i in $("$dir" listApplicationVersions -url "$sscurl" -authtoken "$token" | grep -P "^[0-9]+" | awk '{print $1}') do "$dir" purgeApplicationVersion -applicationVersionID "$i" -scanDate "$scandate" -url "$sscurl" -authtoken "$token" done输出
5513 4659 4658 4688 4685 4686 4687 4683 do "/test/bin/./fortifyclient" purgeApplicationVersion -applicationVersionID "" -scanDate "value" -url "value" -authtoken "value" done正如您所看到的,当我列出我的应用程序时,第一个参数工作正常,但 purge 的第二个参数不起作用。如您所见,$i 为空,它应该是上面列出的
-applicationVersionID的所有元素为空。我在 bash 方面不是那么强,可以随意分享任何替代方案。我会很感激一些反馈。我知道我很接近。谢谢你
【问题讨论】:
-
不相关但
grep -P "^[0-9]+" | awk '{print $1}'可以替换为grep -oP '^\d\S+' -
awk '$1 ~ /^[0-9]+/{print $1}' -
@Jetchisel 是的,这也有效。
+不是必需的。 -
尝试了列出的两个建议都不是运气。列出的相同问题
-applicationVersionID ""为空。再次感谢 -
请参阅 How to read line-by-line 和 Don't read lines with for 并将您的脚本粘贴到 shellcheck.net 以进行验证/推荐。