首页 > 解决方案 > osascript 使用包含路径的变量更改壁纸失败

问题描述

我正在尝试运行此脚本来更改我的墙纸,但是当文件的路径位于变量中时我遇到了问题

sh run.sh
wallpaper_path="$(pwd)/assets/wallpaper.jpg"
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "$(wallpaper_path)"'

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

另一方面,绝对路径工作正常

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/Users/stupifatcat/workspace/project/assets/wallpaper.jpg"'

有谁知道我做错了什么?

标签: osascript

解决方案


单引号字符串可防止变量被扩展。您将需要使用额外的单引号来划分字符串,或者根据需要切换到双引号并转义:

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'$wallpaper_path'"'

或者

osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$wallpaper_path\""

另请注意,$()表单是命令替换。


推荐阅读