2016-07-06 173 views
2

我正在MEAN堆栈中开发应用程序。当新图像上传到服务器时,我想创建一个调整图像大小的脚本作为后台处理。如何在变量中存储tail命令的结果?

脚本观看文件夹中的新图像上传并裁剪它。

我首选Linux shell脚本作为守护进程的方式。

我已经用下面的想法来完成任务。 - 在photolog.txt文件中写入的服务器上的新图像上载,我可以逐行抓取图像。 - 我在watch.sh shell脚本文件中读取了photolog.txt。 - 它逐行迭代,直到达到EOL。 - 新文件再次到达它将附加到EOL。 - 我设法通过tail命令获取更新的文件,并在命令行中获取最新的添加文件显示。用这个代码代替它的魅力。

现在我成功地抓取了服务器上新增文件的图像列表。但主要问题是我无法将tail命令的输出存储在变量中,它必须对我来说,因为无论我得到的输出是文件名的完整路径,它都将用于imagemagick裁剪命令。

Imagemagick中心裁剪缩放图像。

转换-define 文件类型:尺寸= 宽度x高度original_filename -thumbnail 120×120^-gravity中心-extent 100×100 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图像处理命令。

或建议我以其他方式连续监视文件夹以获取新添加的文件列表。

回答

4

由于tail -f不会终止,因此您不想在变量中捕获其输出。但既然你在一个循环中无论如何称呼它,一遍又一遍这样称呼它:

OUT=`tail "$path"` 

或者用现代语法:

OUT=$(tail "$path") 
+0

我真的很感激,如果你给我一个建议这个想法我的想法是错的还是对的?或者我需要改进这个? –

相关问题