macOSでターミナルコマンドを使用して壁紙を変更する

macOSでターミナルコマンドを使用して壁紙を変更する

次のコマンドを使用して、コマンドラインを介して壁紙を変更できます。

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

ここで、コースは、<absolute_path_to_file>背景として使用する画像のフルパスのプレースホルダです。

このコマンドを使用してzsh関数を作成しようとしていますが、$1正しい代替項目を取得するために変数名(exなど)をエスケープする方法を見つけるのに問題があります。たとえば、次の機能を使用します。

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

それから

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

動作しません。エラーが発生します。

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

$1それはおそらくパスに置き換えられず、リテラル文字列として渡されたからです。どうすればいいですか?

ベストアンサー1

パラメータ拡張は一重引用符内で行うことはできません。

努力する:

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

おすすめ記事