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
この場合、default_date の値には年が含まれます。
だから今年が近づいてコンディションが良くなかったようです。
2.6ヶ月以内のタイムスタンプを含めるようにファイルのタイムスタンプを変更しましたが、default.txt
今確認してみると、まだif部分は実行されず、else部分は実行されます。
未知のテストオペレータも会った。誰でも何が間違っているのか教えてもらえますか?誰もがこれを確認できれば大きな助けになります。
ここでは2つの問題に直面しています。
- この比較では、if条件は正しく機能しません。
- 常にelse部分のみを印刷します。
答え1
Kshには、2つのファイルの日付を比較する演算子があります(ash、bash、zshでも使用可能ですが、POSIXでは使用できません)。日付を読むために電話をかけls
たり何もする必要はありません。シェルに日付を比較させる。stat
for f in *.xml; do
if [[ $f -nt default.txt ]]; then …
done