以下は、メディアバックアップのために取り組むスクリプトのスニペットです。スクリプトは、ターミナルコマンドラインから呼び出されたときに期待どおりに実行されます。ただし、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
Platypusがあなたの現在の作業ディレクトリを変更している可能性はありますか?あなたは明示的に出力ディレクトリの名前をつけて、どこに行くのかについてあいまいさはありませんが、 '$ PWD'を変更すると、' find'が空になってしまうかもしれません。 –
おそらく関係はありませんが、 'find'の出力を反復する正しい方法については、[Bash FAQ 001](http://mywiki.wooledge.org/BashFAQ/001)を参照してください。 – chepner
コマンドラインから 'bash'でスクリプトを実行しているようですが、Platypusでラップされたバージョンでは'/bin/sh'で実行されています。 'echo'はいずれの場合も異なった動作をします。 (つまり '-e'は出力するリテラル文字列として'/bin/sh 'によって扱われ、エスケープ文字の処理を可能にするオプションではありません。)代わりに 'printf' \ n \ b''を携帯用の振る舞いに使います。 – chepner