쉘 스크립트 내보내기 파일

쉘 스크립트 내보내기 파일

파일로 내보내야 하는 출력이 있습니다. 그런 다음 이 파일을 호출하여 그 안에 있는 스크립트를 실행해야 합니다. 또 다른 조건은 15분 후에 마지막 쿼리나 명령을 실행하는 것입니다. 아래 코드를 참조하세요.

#SORT RESULT IN DESCENDING ORDER. 
#FORMAT SYNTAX FOR BACKUP DELETION
sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g"

산출:

DELETE BACKUP (backupid) NOWARNING

DELETE BACKUP (backupid) NOWARNING

[일시 중지 후 15분 후에 실행]

DELETE BACKUP (finalbackupid) NOWARNING

최종 백업 ID는 다른 모든 백업 ID가 완료된 후에만 실행할 수 있습니다.

답변1

서로 다른 두 시간에 실행될 두 가지 서로 다른 명령 시퀀스가 ​​있습니다. 따라서 가장 논리적인 해결책은 이러한 명령을 두 개의 서로 다른 파일에 넣는 것입니다.

TEMPRESULT3=$(sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g")

# Put all lines except the last one in a first script:
echo "$TEMPRESULT3" | head -n -1 >"path/to/first-script"

# Put the last line in a second script:
echo "$TEMPRESULT3" | tail -n 1 >"path/to/second-script"

내가 아는 한, 음수 줄 번호는 GNU 확장이며 head, 사용할 수 없는 경우 실행하기 전에 줄 수를 세어야 합니다( total=$(echo "$TEMPRESULT3" | wc -l); all_but_least=$(expr $total - 1)그런 다음 cna를 첫 번째 명령 $all_but_least에 대한 인수로 대신 전달해야 합니다 ).head-1

그 다음에는 원하는 방식으로 이 스크립트를 호출하기만 하면 됩니다. 예를 들어, Benjamin B.가 제안한 구문을 사용하면 mysql다음과 같습니다.

mysql < "path/to/first-script"
# 800 s. = 15 m.
sleep 800
mysql < "path/to/second-script"

답변2

출력을 파일에 쓰고 다음과 같이 쉘 프로그램으로 실행할 수 있습니다.

sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g" > file.sh && chmod +x file.sh && sleep 15m && ./file.sh

관련 정보