我有一个包含这些应用文件的文件夹:
mles:fairs-ionic mles$ ls build
build/com.solutions.enterprise.fairs.dev_v2.2.0.17_20170720_1423-enterprise.ipa
build/com.solutions.enterprise.fairs_v2.2.0.17_20170720_1423-enterprise.ipa
build/de.fairs.dev_v2.2.0.17_20170720_1423-enterprise.apk
build/de.fairs_v2.2.0.17_20170720_1423-appstore.ipa
build/de.fairs_v2.2.0.17_20170720_1423-enterprise.apk
除了*-appstore.ipa
之外,我需要重置所有这些内容。更具体地说是这一个:
mles:fairs-ionic mles$ ls build/{*-enterprise.ipa,*.apk}
build/com.solutions.enterprise.fairs.dev_v2.2.0.17_20170720_1423-enterprise.ipa
build/com.solutions.enterprise.fairs_v2.2.0.17_20170720_1423-enterprise.ipa
build/de.fairs.dev_v2.2.0.17_20170720_1423-enterprise.apk
build/de.fairs_v2.2.0.17_20170720_1423-enterprise.apk
在我的bash脚本中,我尝试过:
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
appFiles=($(cd ${DIR}/build;ls {*-enterprise.ipa,*.apk}))
echo ${appFiles};
echo "loop"
for appFile in "${appFiles[@]}"
do
echo ${appfile}
#app_upload "${appfile}"
done
这会产生:
mles:fairs-ionic ben$ ./test.sh
com.solutions.enterprise.fairs.dev_v2.2.0.17_20170720_1423-enterprise.ipa
loop
appFiles
只包含一行,循环中的appfile
变量始终为空。
我如何迭代build文件夹中的所有文件,除了文件名为build/de.fairs_v2.2.0.17_20170720_1423-appstore.ipa
的appstore的.ipa文件?
答案 0 :(得分:2)
变量appfile
未定义appFile
,因此请更改
echo ${appfile}
到
echo ${appFile}
编辑显示所有数据的行
echo ${appFiles};
要
echo ${appFiles[*]};
答案 1 :(得分:2)
您只需使用glob
提供的扩展bash
功能(请参阅Options which change globbing behavior),打开选项并将值存储到数组即可。在build/
文件夹外部运行。
shopt -s extglob nullglob
fileList=( build/!(*-appstore.ipa) )
现在遍历数组并做任何你想做的事情。
for file in "${fileList[@]}"; do
printf "%s\n" "$file"
done
答案 2 :(得分:1)
您不需要创建一个选定文件数组,因为您可以使用带有大括号扩展的glob直接迭代它们,如下所示:
for file in build/*{-enterprise.ipa,.apk}; do
echo "$file"
# app_upload "$file"
done