APK 版本名称 grep

APK 版本名称 grep

我试图检索不同文件夹中的一堆 apk 文件的 VersionName 并将它们存储在一个数组中,但它不起作用...我几乎尝试了所有方法,但它只在第一个 APK 文件后循环 1 次/停止。

for folders in */ ; 

  do cd $source${MAP[android]}/$folders

  version=("$(aapt dump badging * | grep versionName )") && echo Entering into $folders and getting versionName

done ;

echo ${version[*]};

我明白了:

软件包:name='myapp' versionCode='47' versionName='1.9' platformBuildVersionName='6.0-2438415'

并且仅

${version[0]}

用来...

编辑:感谢steeldriver的帮助,我现在能够获得所有versionName,但它们都存储在${version[0]}中...

for folders in */ ; 

  do cd $source${MAP[android]}/$folders

  version+=("$(aapt dump badging * | grep versionName )") && echo Entering into $folders and getting versionName

done ;

echo ${version[*]};

输出 : 软件包:名称 = 'app' 版本代码 = '48' 版本名称 = '1.10' 平台构建版本名称 = '6.0-2438415' 软件包:名称 = 'app' 版本代码 = '53' 版本名称 = '1.11' 平台构建版本名称 = '6.0-2438415' 软件包:名称 = 'app' 版本代码 = '47' 版本名称 = '1.9' 平台构建版本名称 = '6.0-2438415'

答案1

如果要将命令替换的连续输出附加到数组中bash,则可以使用类似语法

arr+=( "$(command args)" )

例如,给文件

$ grep -H 'versionName' thing*
thing1:versionName: foo
thing2:versionName: bar
thing3:versionName: baz
thing4:versionName: boo

然后

$ for f in thing*; do version+=( "$(grep 'versionName' "$f")" ); done
$ 
$ echo "${version[0]}"
versionName: foo
$ 
$ echo "${version[3]}"
versionName: boo

相关内容