Bash 스크립트의 표현식 오류

Bash 스크립트의 표현식 오류

동일한 스크립트가 한 플랫폼(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

실제로 저는 댓글에서 세 사람이 제안한 변경 사항을 적용했습니다. 이 변경 사항은 모두 스크립트가 제대로 작동하는 데 필요합니다.

최종 코드는 다음과 같습니다.

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

관련 정보