2017-02-10 3 views
0

以下は、メディアバックアップのために取り組むスクリプトのスニペットです。スクリプトは、ターミナルコマンドラインから呼び出されたときに期待どおりに実行されます。ただし、Platypusを使用してスクリプトをアプリケーションにラップした後、コピー先ディレクトリは作成されますが、Forループは実行されず、コピー先のフォルダにはメディアはコピーされません。誰でも私がここで間違っていることを知っていますか?Platypusでラップした後のループブレイクの場合

#!/bin/sh 

DEST_PATH=/Volumes/MediaBackup 
mkdir -p $DEST_PATH  
SAVEIFS=$IFS 

IFS=$(echo -en "\n\b") 

for i in $(find "$PWD" -iname "*.jpg")  
do  
    FILENAME="$(basename $i)" 
    MD5="$(md5 -q $i)" 
    cp "$i" "$DEST_PATH/$MD5-$FILENAME" 
done 

IFS=$SAVEIFS 

穏やかなおならおよび/または女性、好き!以下はあなたのコメントを使った作業スクリプトです。迅速な回りに感謝します。この日前にやったのだろうか。手伝っすべての人へ

#!/bin/bash 

DEST_PATH=/Volumes/PrivateMain/Media 
mkdir -p $DEST_PATH 
SAVEIFS=$IFS 

IFS=$(printf "\n\b") 

for i in $(find "/Users" -iname "*.jpg") 
do 
FILENAME="$(basename $i)" 
MD5="$(md5 -q $i)" 

cp "$i" "$DEST_PATH/$MD5-$FILENAME" 

done 

IFS=$SAVEIFS 
+0

Platypusがあなたの現在の作業ディレクトリを変更している可能性はありますか?あなたは明示的に出力ディレクトリの名前をつけて、どこに行くのかについてあいまいさはありませんが、 '$ PWD'を変更すると、' find'が空になってしまうかもしれません。 –

+1

おそらく関係はありませんが、 'find'の出力を反復する正しい方法については、[Bash FAQ 001](http://mywiki.wooledge.org/BashFAQ/001)を参照してください。 – chepner

+0

コマンドラインから 'bash'でスクリプトを実行しているようですが、Platypusでラップされたバージョンでは'/bin/sh'で実行されています。 'echo'はいずれの場合も異なった動作をします。 (つまり '-e'は出力するリテラル文字列として'/bin/sh 'によって扱われ、エスケープ文字の処理を可能にするオプションではありません。)代わりに 'printf' \ n \ b''を携帯用の振る舞いに使います。 – chepner

答えて

0
#!/bin/bash 

DEST_PATH=/Volumes/PrivateMain/Media 
mkdir -p $DEST_PATH 
SAVEIFS=$IFS 

IFS=$(printf "\n\b") 

for i in $(find "/Users" -iname "*.jpg") 
do 
FILENAME="$(basename $i)" 
MD5="$(md5 -q $i)" 

cp "$i" "$DEST_PATH/$MD5-$FILENAME" 

done 

IFS=$SAVEIFS 

ありがとう!ただし、同じ名前のファイルを2つ上書きする可能性があるため、以下のようにスクリプトを編集しました。

SAVEIFS=$IFS 
IFS=$(printf "\n\b") 
COUNTER=0; 
for i in $(find "/Users" -iname "*.jpg"); 
do 

BASE=`expr "$i" : '.*/\(.*\)\..*'`; 
EXT=`expr "$i" : '.*/.*\.\(.*\)'`; 
COUNTER=`expr $COUNTER + 1` ; 
cp "$i" ""${tardir}"/"$x"/JPG/"$BASE"_"$COUNTER"."$EXT"" 

done 
IFS=$SAVEIFS   
+0

私はあなたが 'cp" $ i "" $ {tardir}/$ x/JPG/$ {BASE} _ $ COUNTER。$ EXT "'と思っています。 – chepner

関連する問題