고쳐 쓰다:

고쳐 쓰다:
/usr/bin/rsync -avh -r /Parent/Folder1 /Destination/

if [ $? == 0 ]
then
   cp /FolderCopyStatus/Success /Result/Success$(basename !:3)
else
   cp /FolderCopyStatus/Failure  /Result/Failure$(basename !:3)
fi

질문 1

Cent 운영 체제에서 두 폴더를 동기화하기 위해 rsync 명령을 사용하고 있습니다. rsync 명령이 성공하면 Success 디렉터리의 폴더를 Result 디렉터리로 복사하고 현재 날짜를 추가합니다. 이건 잘 작동해요

내가 원하는 것은 날짜를 추가하는 대신 성공에서 복사할 때, 폴더 1위의 명령을 추가해야 합니다. 그래서 뭐?

질문 2

나는 crontab에서 이 쉘 스크립트를 자동화했습니다. 자동화 스크립트의 명령에 Folder1을 매개변수로 전달하고 싶습니다. 그래서 방법?

고쳐 쓰다:

 if [ $? == 0 ]
    then
       cp /FolderCopyStatus/Success /Result/Success$(basename !:3)
    else
       cp /FolderCopyStatus/Failure  /Result/Failure$(basename !:3)
    fi

질문: $(basename !:3) 은 스크립트에서는 작동하지 않지만 echo $(basename !:3) 과 같은 일반 명령에서는 작동합니다.

답변1

질문 1

/usr/bin/rsync -avh -r /Parent/Folder1 /Destination/ if [ $? == 0 ] then cp /FolderCopyStatus/Success /Result/Success$(basename !^) else cp /FolderCopyStatus/Failure /Result/Failure$(date +%F_%R) fi

질문 2

스크립트의 첫 번째 줄을 다음과 같이 설정하세요.

/usr/bin/rsync -avh -r /Parent/$1 /Destination/

그런 다음 스크립트를 호출할 때 이렇게 호출하세요.

/path/to/script Folder1

관련 정보