Я пытаюсь запустить простой скрипт launchd, который копирует файл из одного каталога в другой, когда файл изменяется, но я хочу вставить его с уникальной временной меткой, чтобы я мог создавать версии файлов. Мой скрипт launchd выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>change.file.copy</string>
<key>ProgramArguments</key>
<array>
<string>cp</string>
<string>/path/to/folder/sample_file.txt</string>
<string>/path/to/another_folder/$(gdate +%Y%m%d_%T.%N)_sample_file.txt</string>
</array>
<key>WatchPaths</key>
<array>
<string>/path/to/folder/sample_file.txt</string>
</array>
</dict>
</plist>
Команда отлично работает, если я запускаю ее через Терминал, т.е. если я запускаю:
cp /path/to/folder/sample_file.txt /path/to/another_folder/$(gdate +%Y%m%d_%T.%N)_sample_file.txt
Однако всякий раз, когда событие вызывает его, вместо этого создается файл со строкой (gdate +% Y% m% d_% T.% N) вместо фактической даты, т.е. оператор даты не разрешается при запуске через launchd.
Я всегда мог создать исполняемый файл и запустить его через launchd, но мне было интересно, почему вышеупомянутое не работает правильно.
Спасибо за помощь!