0

我尝试使用在我们的构建服务器上运行的此脚本从 iOS 模拟器中删除应用程序

#!/bin/Bash

#Go to iOS Sim
cd ~/Library/Application\ Support/iPhone\ Simulator

#Loop through each Version of iOS
for dir in ~/Library/Application\ Support/iPhone\ Simulator/*/
do
    dir=${dir%*/}
    cd "$dir"

    #Check if the iOS version has any apps installed                    
    if [ -d "$dir/Applications" ]; then
        echo Applications folder exists in "$dir"
        cd "$dir/Applications"

        #Delete each app
        for app in "$dir/Application/*/"
        do
            echo $app

            if [ "${#app}" -eq 36 ]; then   
                echo Delete Folder
            fi
        done

    fi
done

我卡在#Delete each应用程序部分。我想遍历 Applications 文件夹并首先检查文件夹的字符数是否为 36(GUID)然后删除该文件夹

4

2 回答 2

1

如果你有一个*引号,bash 将按字面意思解释它,而不是作为一个 glob。您可以将 for 更改为此:

 for app in "$dir"/Application/*/

当然你已经进入了目录,所以

for app in */

可能是你想做的

于 2013-03-01T09:05:02.970 回答
0

我只想使用你手头的众多(和很棒的)实用程序来处理这类事情。你可以使用类似的东西

LENGTH=`echo $app | wc -c`
if [[ $LENGTH -eq 36 ]]; then
  # do the thing
fi

注意:这里的神奇之处在于使用反引号和 wc(wordcount)实用程序。当您查看 wc 的手册页时,还可以查看 tr(仅部分相关,但另一个很好的了解工具)。

于 2013-03-01T08:42:58.933 回答