これは一般的な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'"