あなたの問題は、 HERE 文字列を使用してこれらの行を<<<
. HERE 文字列が非常に大きい場合、これは遅くなります。
がファイルの場合$imgageList
、ファイル リダイレクトを行うことができます。これにより、はるかに高速になります。
while read line
do
if [ -e "$line" -a ! -z "$line" ]
then
...
fi
done < "$imagesList_file" # Redirect from a file.
あなたはこれを行うことができるかもしれません:
echo "$imagesList" | while read line
do
if [ -e "$line" -a ! -z "$line" ]
then
...
fi
done
しかし、コマンドラインのオーバーロードが心配です。Linux/Unix システムでは、これは/usr/include/sys/syslimits.h
またはで定義されてい/usr/include/syslimits.h
ます。私のシステムでは 1024 * 256 または 262,144 バイトです。これは多くのように聞こえますが、誤解を招く可能性があります。ファイル名は非常に長くなる可能性があります。特に、ディレクトリ パスが含まれている場合はそうです。これは通常、テスト中は合格するのに十分な長さですが、実際に機能するために本当に依存している場合は失敗します。と。それは静かに失敗します。最後のいくつかのファイル名が削除されたことを決して知りません。
最善の策は、環境変数にイメージをロードするのではなく、イメージ名のリストを含むファイルを作成することです。