コマンドラインで次のコマンドを実行しています。
for DATAFILE in `find dir_name -type f -mtime +10 | egrep -v -e 'archive/'`
do
echo 'Data file name- ' "$DATAFILE"
echo 'Base name '
BASENAME=`basename "${DATAFILE}"`
DESTFILE="${BASENAME}"_`date +"%Y%m%d%H%M%S"`
echo "Dest file - "$DESTFILE
done
これに対して次の結果が得られます。
Data file name- DIR_PATH_1/file_1.txt
Base name
Dest file - file_1.txt_20120719041239
Data file name- DIR_PATH_2/file_2.txt
Base name
Dest file - file_2.txt_20120719041239
同じコマンドをシェル スクリプトに入れて実行すると、次の結果が得られます。
Data file name- DIR_PATH_1/file_1.txt
DIR_PATH_2/file_2.txt
Base name
Dest file - file_2.txt_20120719040956
Control-M やその他のジャンク文字のスクリプトを確認しました。また、シェル スクリプトに余分な手順はありません (パラメーターもすべてもありません)。
誰かが私を正しい方向に向けることができますか?
ありがとう。
更新 1:
ループに次の変更を加えました。
ついさっき:
for DATAFILE in `find ${ROOT_DIR} -type f -mtime +$DAYS_ARCH |
egrep -v -e 'archive/'`
今:
find ${ROOT_DIR} -type f -mtime +$DAYS_ARCH |
egrep -v -e 'archive/' | while read DATAFILE
現在は正常に動作しているようです。私はまだこれを確認するためにテストしています。
更新 2:
FOR ループから WHILE ループに変更すると、問題が修正されました。しかし、なぜこれが起こっているのか、まだ理解できません。誰?