循环针对所有元素运行可执行文件



我正在努力寻找一种方法来自动清除测试服务器中的大量多个应用程序。我将服务器客户端fortifyclient安装在一个测试pod中,pod可以与服务器通信。所以流程:

  1. 列出我的所有应用程序和grep所有它们的应用程序版本id
  2. 清除那些应用程序版本id
  3. 已完成

因此,作为第一步,我在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

正如你所看到的,当我列出我的应用程序时,第一个参数运行良好,但要清除的第二个参数不起作用。正如您所看到的,$i为null,它应该是上面列出的-applicationVersionID的所有元素都为空。我对bash不太感兴趣,可以随意分享其他选择。如果能提供反馈,我将不胜感激。我知道我很接近。谢谢

当我试图重现您的脚本行为时,我的脚本会标记一个关于">$dir";$((中的目录引用。如果你看一下POSIX引用,它将表明它不能用"/"以及其他字符。

这可能也是你的问题。

这表明您的listApplicationVersions应该包含"$dir";引用,并将其从$((表达式中删除。此外,为了在您的上下文中保持一致性,您可能应该对purgeApplicationVersion脚本执行同样的操作,并删除"$dir";从你的purge.sh.

相关内容

  • 没有找到相关文章

最新更新