Bash 使用终端从iOS模拟器删除应用程序

Bash 使用终端从iOS模拟器删除应用程序,bash,unix,terminal,Bash,Unix,Terminal,我正在尝试使用在构建服务器上运行的脚本从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"

我正在尝试使用在构建服务器上运行的脚本从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

我被困在
#删除每个
应用程序部分。我想在Applications文件夹中循环,首先检查文件夹的字符数是否为36(GUID),然后删除文件夹

我只想使用您手边的大量(非常棒的)实用程序来完成这类工作。你可以用像

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

注意:这里的神奇之处在于使用反勾号和wc(wordcount)实用程序。当您查看wc的手册页时,签出tr(仅部分相关,但这是knw的另一个优秀工具)。

如果您在引号中有一个
*
,bash将逐字解释它,而不是作为一个glob。您可以将的更改为:

 for app in "$dir"/Application/*/
当然你已经进入了目录,所以

for app in */

这可能是您想要做的

如果您想要像这样测量字符串的长度,您应该使用echo的
-n
选项,否则您也将计算换行符(并引用“$app”变量,以防它有连续的空格)。但是表达式
“${#app}”
也给出了长度,OP的问题在其他地方。