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アプリのセクションで立ち往生しています。アプリケーションフォルダーをループして、最初にフォルダーの文字数が36(GUID)であるかどうかを確認してから、フォルダーを削除したい

4

2 に答える 2

1

引用符で囲まれている場合*、bash はそれをグロブとしてではなく文字どおりに解釈します。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 の man ページを見ているときに、tr もチェックしてください (部分的にしか関連していませんが、知っておくべきもう 1 つの優れたツールです)。

于 2013-03-01T08:42:58.933 に答える