Ho il seguente AppleScript che sto cercando di eseguire il debug:
tell application "System Events"
set theResult to (do shell script "sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db \"SELECT data.value
FROM data WHERE data.ROWID = 2\"") & "/" & (do shell script "sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db \"SELECT data.value
FROM preferences JOIN data on preferences.key = 16 AND preferences.picture_id = 1 AND preferences.data_id=data.ROWID\"")
do shell script "open -b \"com.adobe.Photoshop\" " & quoted form of theResult
end tell
Fondamentalmente ciò che fa questo script è che recupera il percorso dello sfondo attualmente visualizzato sul mio computer e lo passa come argomento per Photoshop.
Il percorso che viene recuperato è nella forma ~/PATH/TO/IMAGE
. Questo percorso ha spazi in esso, motivo per cui ho usato il comando quoted form of
per sfuggire alla stringa. Tuttavia, nel fare ciò il percorso dell'immagine cambia in /~/PATH/TO/IMAGE
e sono molto perplesso sul motivo per cui aggiunge l'extra "/" all'inizio della stringa. Per questo motivo, lo script non viene eseguito come previsto. Come posso evitare il percorso ma impedirgli di aggiungere l'extra "/". Esiste un modo per convertire il percorso in un percorso completo o un altro modo di sfuggire alla stringa?
Versione aggiornata dello script con correzione:
tell application "System Events"
set currentWallpaperPath to (do shell script "sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db \"SELECT data.value
FROM data WHERE data.ROWID = 2\"") & "/" & (do shell script "sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db \"SELECT data.value
FROM preferences JOIN data on preferences.key = 16 AND preferences.picture_id = 1 AND preferences.data_id=data.ROWID\"")
if currentWallpaperPath starts with "~/" then set currentWallpaperPath to (system attribute "HOME") & text 2 thru -1 of currentWallpaperPath
do shell script "open -b \"com.adobe.Photoshop\" " & quoted form of currentWallpaperPath
end tell
Volevo anche aggiungere che questo script è rilevante solo per OS X Mavericks (10.9) poiché le informazioni di sfondo sono ora spostate nel file di database anziché essere referenziate nel file com.apple.Desktop.plist come era in precedenza versioni di OS X. Inoltre, il mio computer è impostato per visualizzare in modo casuale lo sfondo da una cartella specifica sul mio computer. Potrebbe essere necessario modificare lo script a seconda della configurazione del tuo computer.