쉘 스크립트 관련 질문입니다.

mooshick의 이미지

안녕하세요

리눅스를 조금 만지다보니 쉘스크립트의 필요성이 슬슬 보이기 시작해서

몇일전에 입문했습니다

이제 간단한 스크립트는 읽으면 뭔 내용인지 알정도는 되었는데요

문제가 하나 생겼습니다. 예제파일중에 이런것이 있는데요

#!/bin/sh

logfile="/var/log/httpd/access_log"
mv ${logfile} ${logfile}-'date '+%Y%m%d''
apachectl graceful
exit 0

보시면 access_log파일이 access_log-오늘 년월일

이렇게 되어야 하는데

그냥access_log-date +%Y%m%d

이런식으로 저장이 되어버립니다.

access_log-20050728 이런식으로 년월일이 붙게 하려면

어찌해야 할까요? 예제 보면서 하는데.. 이부분만 안풀립니다.

diylinux의 이미지

간단히 생각하세요.

shell script는 명령어 조합입니다. 단지 ` ` 차이와 ' ' 차이 그리고 "" 차이만

알고 계시면 됩니다.

위의 내용중에서 mv ${logfile} ${logfile}-'date '+%Y%m%d'' 를

mv ${logfile} ${logfile}-`date +%F` 혹은

mv ${logfile} ${logfile}-`%Y%m%d` 와 같이 하시면 됩니다

참고로 `` (역 작은 따옴표) 는 실행 명령을 받는 것입니다 같은 거로는
$( 명령어 ) 가 있습니다.

두번째 ' ' (작은 따옴표) 는 모든걸 그대로 문자열로 받아 들입니다.

세번째 "" 는 문자열로 치환하는 예입니다

간단히 echo ` date ` 라고 출력하시면 현재 날짜가 나옵니다
echo 'date ' 라고 하면 date 라고 나옵니다
echo "date " 라고 해도 역시 date 가 나옵니다

그런데 echo '$date' 라고 하면 $date 가 출력되지만
echo "$date" 라고 하면 $date 변수 내용이 출력됩니다

참고하세용~~

mooshick의 이미지

그렇게 틀리군요.. 문법부터 다시 해야게습니다..