Setzen einer Variablen auf das Ergebnis eines Terminalbefehls innerhalb eines Applescripts

Ich versuche, ein Skript zu erstellen, das alle angeschlossenen externen Laufwerke auswirft und nicht weitermacht, bis sie alle getrennt sind.

Das Hauptproblem, das ich habe, besteht darin, die Variable vol_countauf das Ergebnis des folgenden Skripts setzen zu können:

tell application "Terminal"
    cd /Volumes
    ls | wc -l
end tell

Ich habe dieses Skript auch nicht getestet, aber ich nehme an, dass Sie auf diese Weise einen Terminalbefehl in einem Applescript ausführen.

Zusatzfrage:

Wie würde ich dann alle bis auf zwei Festplatten auswerfen lassen (meine Festplatte ist in zwei Festplatten partitioniert)?

on run {}

    tell application "Finder"
        set vol_count to do shell script "cd /Volumes; ls | wc -l"

        eject the disks

        repeat until vol_count is equal to 2
            set vol_count to do shell script "cd /Volumes; ls | wc -l"
        end repeat
    end tell
end run

Antworten (3)

versuchen:

set dontEject to {"Mac OS X", "Time Machine", "Media", "home", "net"}
set myDisks to list disks

repeat with aDisk in myDisks
    if aDisk is not in dontEject then tell application "Finder" to eject aDisk
end repeat

Sie können so etwas tun:

set vol_count to do shell script "cd /Volumes; ls | wc -l"

Auf diese Weise führen Sie in AppleScript keinen Terminalbefehl aus. Versuchen Sie so etwas wie

set myvar to do shell script "ls ~"