这可能是一个常见的 UNIX 问题,因此不限于 macOS。我想将 rsync 命令的输出作为通知消息输出。但我没有成功正确放置变量。如果我的代码是这样的:
RSYNC1="$(rsync --itemize-changes -avz -e ssh \
/Users/user/ server:/home/backup/ --delete)" && \
osascript -e 'display notification "${RSYNC1}" with title "Backup"'
那么 ${RSYNC1} 只是按字面打印,如果我像这样转义引号
osascript -e 'display notification \"${RSYNC1}\" with title "Backup"'
然后给出这个错误:
> 21:22: syntax error: „given“, „in“, „of“, experssion, „with“,
> „without“, other parameter name, etc. expected, but unknown token
> found. (-2741)
我必须改变什么?
答案1
您必须使用双引号来获得变量扩展。要在双引号内打印文字双引号,您必须转义它们:
osascript -e "display notification \"${RSYNC1}\" with title \"Backup\""
或者,在双引号内使用单引号:
osascript -e "display notification '${RSYNC1}' with title 'Backup'"