2016-07-06 14 views
2

私はMEANスタックでアプリケーションを開発しています。新しい画像がサーバーにアップロードされるときに、画像のサイズ変更のスクリプトを作成して、背景処理としてクロップすることをお勧めします。tailコマンドの結果を変数に格納する方法は?

スクリプトは、フォルダ内の新しい画像のアップロードを監視し、それをトリミングします。

私はLinuxシェルスクリプトのデーモンとしての好みの方法です。

私は以下のアイデアを熟練した作業に使用しました。 - サーバー上の新しい画像をphotolog.txtファイルにアップロードします。ここで画像を1行ずつ取り込むことができます。 - watch.shシェルスクリプトファイルでphotolog.txtを読んでいます。 - EOLに達するまで、行単位で反復します。 - もう一度新しいファイルが到着すると、EOLに追加されます。 - tailコマンドで更新されたファイルを取得し、最新のaddファイルをコマンドラインで表示できます。このコードまで、それは魅力的です。

これで、サーバーに新しく追加されたファイルのイメージリストを取得できました。主な問題は、tailコマンドの出力を変数に格納するのに失敗していることです。出力が何であれ、ファイル名の完全パスであり、imagemagick cropコマンドで使用するためです。

スケール付きのイメージマジックセンター作物とイメージ。

は変換-define ファイル型:サイズ= 120x120^-gravityセンターは、100×100 resize_filenameを-extent widthxheightのoriginal_filename -thumbnail

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

をあなたが私にこの考えについての示唆を与える場合、私は本当に感謝しています私のアイデアが間違っているか正しいのか?または私はこれを改善する必要がありますか? –

関連する問題