
同じスクリプトが1つのプラットフォーム(Arch Linux)と別のモバイルプラットフォーム(Maemo Linux)でうまく動作していても、非常に奇妙なエラーが発生します。ここでは、行番号とともにコードの関連部分を渡します。
41 for DIR in $DIRS
42 do
43 tempdir=$DIR/
44 tempval=$(stat -c %Y $tempdir)
45 echo $tempval
46 if (( $tempval > $(date +%s) - 3600*24*30 )); then
47 echo "I am done basically. Exiting..."
48 exit
49 else
50 continue
51 fi
52 done
上記のコードからDIRSディレクトリ名を含むリストです。このループでは、リスト内の30日より古いディレクトリを見つけようとし、見つかった場合はスクリプトを終了します。
45行目はデフォルトでデバッグ目的で存在します。
次のエラーが発生します。
./script.sh : line 52 : 1372757584 : not found
コメントで提案されているようにいくつかの点を変更した後:
いいですね。今、エラーは次のようになります。
scone.sh: line 46: ((: 1372768246 -gt 1372770593 - 3600*24*30 : syntax error
in expression (error token is "1372770593 - 3600*24*30 ")
答え1
実際、私はコメントで3人が提案した変更を適用しました。これらの変更はすべてスクリプトが正しく機能するために必要です。
最終コードは次のとおりです。
temptime=$(date +%s)
temptime=`expr $temptime - 2592000`
for DIR in $DIRS
do
tempdir=$DIR/
echo $tempdir
tempval=$(stat -c %Y $tempdir)
echo $tempval
if [[ $tempval -gt $temptime ]]; then
echo "Exiting gracefully!!!"
exit
else
continue
fi
done