как сохранить результат команды 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 команда обработки изображений.



Или предложите мне другой способ непрерывного мониторинга папки, чтобы получить вновь добавленный список файлов.

669   1  

1 ответ:

Поскольку tail -f не завершается, вы не хотите записывать его выходные данные в переменную. Но поскольку вы все равно вызываете его в цикле, называйте его снова и снова так:

OUT=`tail "$path"`

Или используя современный синтаксис:

OUT=$(tail "$path")

Comments

    Ничего не найдено.