我需要执行命令以找到具有某些版本号的应用程序。我正在读取包含应用程序名称和版本号的CSV文件。对于文件中的每个应用程序,我正在搜索具有该应用程序名称的文件,并从这些文件中获取版本号,并将其与文件中的版本号进行比较。在某些情况下,grep命令将返回多个值。我正在尝试将这些值分配给数组变量。但是,我无法一一访问这些值。当我尝试从数组访问第一个值时,它将返回整个数组
使用数组变量来存储命令中的多个值,并尝试使用FOR和WHILE循环来逐一读取数组中的值。
#!/bin/bash
IFS=","
declare -a apps
while read f1 f2
do
#versionFromSVN=($(grep -Hnr versionProperty . | grep $f1 | awk {'print $2'} | sed -e 's/<versionProperty>\(.*\)<\/versionProperty>/\1/'))
apps=( $(grep -Hnr versionProperty . | grep $f1 |grep -v 'test' | awk {'print $1'} | cut -d ':' -f 1) )
echo $apps
for (( i=0;i<${#apps[@]};i++ ));
do
echo "Current App path is: " ${apps[i]};
versionFromSVN=$(grep -Hnr versionProperty . | grep ${apps[i]} | awk {'print $2'} | sed -e 's/<versionProperty>\(.*\)<\/versionProperty>/\1/');
echo "Version Number in iteration " $i ${apps[i]} $versionFromSVN;
if [ "$versionFromSVN" -ge $f2 ]
then
appPath=$(grep -Hnr versionProperty . | grep $f1 | awk {'print $1'})
echo $appPath $versionFromSVN >> result.csv
fi
done
done < $1
exit 0
预期:当前应用程序路径为:./SaveoDatabase_root/Deployment/LoadSFDCDataToPortal.archive
实际结果: 当前应用程序路径为:./SaveToDatabase_root/Deployment/LoadSFDCDataToPortal.archive ./SaveToDatabase/Deployment/LoadSFDCDataToPortal.archive