2つの日付を比較するスクリプトを開発しました。
#!/bin/ksh
####################################################################
#
#DECLARING ALL THE VALUES AND PATHS
#
####################################################################
LOG_FOLDER=/user/sba-appl/test/sscr/ramu
TARGET_DIR=/user/sba-appl/test/sscr/ramu
###################################################################
#
#GETTING THE TIME STAMP OF THE FILE
#
####################################################################
cd $TARGET_DIR
DEFAULT_DATE=`ls -l /$TARGET_DIR/default.txt| awk '{print $6,$7,$8}'`
printf "$DEFAULT_DATE \n"
for f in *.xml
do
echo "Processing $f"
FILE_DATE=`ls -l /$TARGET_DIR/$f|awk '{print $6,$7,$8}'`
printf "$FILE_DATE \n"
echo "dafault filedate is $DEFAULT_DATE"
if [ $FILE_DATE -gt $DEFAULT_DATE ]
then
echo "Call the Jar for the file $f"
else
echo "Do not call the Jar for the file $f"
fi
done
ここで私は2つの問題に直面しています:
1。これにはデフォルトのファイルがあり、このファイルのタイムスタンプは古い時間、つまり1990に設定する必要があります。これはタイムスタンプ付きのtouch -t
の助けを借りて行うことができます。
Kshを使用していますが、statはここにありません。だから私はls -l
を使っています。ただし、ls -l
コマンドを使用している場合は、1990年が一覧表示されます(ファイルが6か月前の場合は常に年が表示されるため)。この場合、default_date値にはyearが含まれます。
ですから、年が来て、条件が崩れていると思います。
2。default.txt
を含むファイルのタイムスタンプを6か月以内に変更し、今すぐ確認しましたが、if部分が実行されておらず、else部分が実行されています。
不明なテストオペレーターも取得しています。どこが悪いのか誰か教えてもらえますか?誰かがこれをチェックすることができればそれは大きな助けになるでしょう。
私はここで2つの問題に直面しています:
Kshには、2つのファイルの日付を比較する演算子があります(ash、bash、zshでも使用できますが、POSIXでは使用できません)。日付を読み取るためにls
やstat
などを呼び出す必要はありません。シェルにそれらを比較させます。
for f in *.xml; do
if [[ $f -nt default.txt ]]; then …
done