все еще учусь, и я заблудился с IFS =Возникли проблемы с несколькими переменными с использованием прочитать в цикле в то время как
#!/bin/bash
inotifywait -m -r --excludei '(.txt$|.old$|.swp$|.swx$|.swpx$|.zip$)' /path/to/watch -e create |
while read path action file; do
cd $path
USER="$(stat -c %U $file)"
echo "To: User <[email protected]>
CC: Support <[email protected]>
From: $USER <[email protected]>
Subject: $USER has Uploaded a new File
The user '$USER' uploaded the file '$file' to '$path'" > /mnt/remote/ian/temp2.txt
cat /path/to/temp/file.txt | ssmtp [email protected]
rm /path/to/temp/file.txt
done
Это был мой первый сценарий, и он прекрасно работает до тех пор, пока нет пробелов в имена файлов, которые загружаются. Я прочитал несколько сценариев, которые используют IFS = 'whatever' для определения разделителей полей, но я не хочу обходиться с этим, пока он находится в процессе производства; он работает, но меня это раздражает, когда я не могу получить имя пользователя, загрузившего файл. Пожалуйста, дайте мне подсказку.
КРОССПОСТИНГ: http://serverfault.com/q/679424/234750 – Cyrus
С inotifywait-х форматированные строки не поддерживают '\ 0' - единственный символ, который не может легально существовать в имени файла - там буквально * не * возможно 100% -ное решение. –
@CharlesDuffy вот что я боялся ... – snowexcuse