Ändern des Hintergrundbilds mit einem Terminalbefehl unter macOS

Ändern des Hintergrundbilds mit einem Terminalbefehl unter macOS

Es ist möglich, das Hintergrundbild über die Befehlszeile mit dem Befehl zu ändern

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "<absolute_path_to_file>"'

wobei „natürlich“ <absolute_path_to_file>nur ein Platzhalter für den vollständigen Pfad des Bildes ist, das als Hintergrund verwendet werden soll.

Ich versuche, mit diesem Befehl eine ZSH-Funktion zu schreiben, habe aber Probleme herauszufinden, wie ich den Variablennamen (z. B. $1) maskieren kann, um eine korrekte Substitution zu erhalten. Beispielsweise kann ich die Funktion

change_wallpaper () { osascript -e 'tell application "Finder" to set desktop picture to POSIX file "$1"' }

und dann

$ change_wallpaper /Users/noibe/Wallpapers/wallpaper.jpg

funktioniert nicht und ich erhalte die Fehlermeldung:

33:48: execution error: Finder got an error: AppleEvent handler failed. (-10000)

wahrscheinlich, weil $1es nicht durch den Pfad ersetzt wird, sondern als wörtlicher String übergeben wird. Wie kann ich das zum Laufen bringen?

Antwort1

Eine Parametererweiterung ist innerhalb einfacher Anführungszeichen nicht möglich.

Versuchen:

change_wallpaper() {
    osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'"$1"\"
}

Antwort2

Ich habe es geschafft, es zum Laufen zu bringen, indem ich die doppelten Anführungszeichen maskierte und die einfachen Anführungszeichen durch doppelte Anführungszeichen ersetzte:

change_wallpaper() {
    osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$1\""
}

verwandte Informationen