Bashスクリプトの式エラー

Bashスクリプトの式エラー

同じスクリプトが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

おすすめ記事