我正在使用一个调用这两行代码的shell脚本:
iname=$(ls -d -1 $PWD/*jpg)
osascript -e 'tell app "Finder" to set desktop picture to POSIX file \"$iname\"'
其中iname是一个变量,它是我想要的图片的绝对路径。从我读过的,这是如何将变量传递给osascripts。但是我在尝试运行这两行时遇到了这个错误
55:56: syntax error: Expected expression, property or key form, etc. but found unknown token. (-2741)
有人可以解释我如何解决这个问题吗?
答案 0 :(得分:2)
您正尝试使用单引号扩展变量。试试这个:
osascript -e 'tell app "Finder" to set desktop picture to POSIX file "'"$iname"\"
答案 1 :(得分:0)
您还可以使用显式运行处理程序来获取命令行参数:
osascript -e'on run {a}
tell app "finder" to set desktop picture to posix file a
end' "$iname"`
如果路径可以是相对路径,则可以使用GNU readlink
将其转换为绝对路径:
osascript -e'on run {a}
tell app "finder" to set desktop picture to posix file a
end' "$(greadlink -f "$iname")"
如果需要将绝对路径列表传递给脚本,可以执行以下操作:
osascript -e'on run a
set l to {}
repeat with f in a
set end of l to posix file f
end
l
end' "$@"
如果您需要将路径列表传递给脚本并将相对路径转换为绝对路径,则可以执行以下操作:
osascript -e'on run {a}
set l to {}
repeat with f in (get paragraphs of a)
set end of l to posix file f
end
l
end' "$(greadlink -f "$@")"