как сохранить результат команды tail в переменной?
Я разрабатываю приложение в стеке MEAN. Я хочу создать сценарий изменения размера изображения и обрезки в качестве фонового процесса, когда новое изображение загружается на сервер.
Скрипт наблюдает за загрузкой нового изображения в папку и обрезает его.
Я предпочитал способ написания сценариев оболочки Linux в качестве демона.
Я использовал следующую идею для выполнения задач.
- Новое изображение загружается на сервер и записывается в photolog.txt файл, где я могу захватить изображения строка за строкой.
- Я читал фотолог.txt в watch.sh файл сценариев оболочки.
- Он перебирает строчку за строчкой, пока не достигнет Эол.
- Снова поступает новый файл, который он добавит в EOL.
- Мне удается получить обновленный файл с помощью команды tail, и получить последнее отображение файла add в командной строке. До этого кода он работает очарование.
Теперь я успешно захватываю список изображений недавно добавленного файла на сервере. но главная проблема заключается в том, что я не могу хранить выходные данные команды tail в переменной, и это должно быть для меня, потому что любой вывод, который я получаю, полон путь к имени файла и он будет использоваться в команде ImageMagick crop.
Imagemagick центр кадрирования с масштабированием изображения.
Convert-define file-type : size=widthxheight original_filename - миниатюра 120x120^ - центр тяжести-экстент 100x100 resize_filename
Watch.sh
#!/bin/bash
path="/var/www/html/AppBite/trunk/photolog.txt"
cat $path |
until false
do
# If file exists
if [[ -f "$path" ]]
then
while IFS= read -r photo
do
imageFormat=`identify $photo | awk '{print $2}'`
imageScale=`identify $photo | awk '{print $3}'`
echo "$photo $imageFormat $imageScale"
done
fi
# Continous monitor file changes via commandline
tail -f $path
done
Я успешно захватываю вывод командной строки, но я не могу хранить значение в переменной, для следующего использования imagemagick команда обработки изображений.
Или предложите мне другой способ непрерывного мониторинга папки, чтобы получить вновь добавленный список файлов.
1 ответ:
Поскольку
tail -fне завершается, вы не хотите записывать его выходные данные в переменную. Но поскольку вы все равно вызываете его в цикле, называйте его снова и снова так:OUT=`tail "$path"`Или используя современный синтаксис:
OUT=$(tail "$path")
Comments