기본적으로 이것은 내가 대답하려는 질문입니다.
2) 금요일에 실행하면 user2의 홈 디렉터리에 있는 모든 파일을 백업하는 쉘 스크립트(fridaybackup.sh)를 작성합니다. 이 스크립트는 user2backup.tar라는 백업(tar) 파일과 user2backup.zip이라는 zip 파일을 생성합니다.
이것이 내가 지금까지 가지고 있는 것입니다
#!/bin/sh
echo
echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
read INPUT
day=$(date +%A)
time=$(date +%m-%d-%y)
filename=user2backup${time}.tar.gz
srcdir='/export/home/student/user2'
desdir='/export/home/student/backupfolder'
case $INPUT in
N) echo "Bye." ;;
Y)
if [ "$day" = "Monday" ]
then
tar -cpzf $desdir/$filename $srcdir
else
echo "A full backup is done on Fridays only!!!"
fi ;;
*) echo "Error" ;;
esac
그런데 이런 결과가 나오네요
student@solaris:~/user2$ sh fridaybackup.sh
Do you want to create a full backup (Y=Yes, N=No) : Y
tar: /export/home/student/backupfolder/user2backup10-02-17.tar.gz: No
such file or directory
student@solaris:~/user2$ gedit fridaybackup.sh
어떤 도움이라도 좋을 것입니다. 미리 감사드립니다.
답변1
복사/붙여넣기 문제가 있는 것 같습니다.
변수는 다음을 사용하여 설정해야 합니다.
day=$(date +%A)
나는 당신이 백틱을 사용하고 있다고 생각하며 "월요일" 오류에 표시된 것처럼 서식을 지정할 때 사라집니다.
근처에 문법 오류가 있습니다.if
월요일 오류: 찾을 수 없음
Bash 발생의 14번째 줄에 표시된 대로 설정이 올바른지 증명하십시오.
( Monday = friday )
이는 하위 쉘을 포크하고 Monday
프로그램 이름과 = Friday
인수로 실행됩니다. 당신이 원하는 것이 아닌가요?
쉘 테스트에서 완성 사용
if [ "$day" = "Friday" ]
또는
if test "$day" = "Friday"
따라서 올바른 쉘은 다음과 같습니다.
#!/bin/sh
echo
echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
read INPUT
day=$(date +%A)
time=$(date +%m-%d-%y)
filename=user2backup$time.tar.gz
srcdir='/export/home/student/user2'
desdir='/export/home/student/backupfolder'
case $INPUT in
N) echo "Bye." ;;
Y)
if [ "$day" = "Friday" ]
then
tar -cpzf $desdir/$filename $srcdir
else
echo "A full backup is done on Fridays only!!!"
fi ;;
*) echo "Error" ;;
esac
답변2
read -p "Do you want to create a full backup (Y=Yes, N=No) : " INPUT
귀하의 것 대신 사용해보십시오 :
echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
read INPUT
편집: @Raman이 설명했듯이 변수 선언에 실수가 있었습니다.
filename
이는 변수를 선언하는 가장 좋고 안전한 방법 입니다 .
filename="user2backup${time}.tar.gz"
답변3
이 설명은 사용자에게 물어볼 필요가 없습니다. 자동으로 수행할 수 있습니다.
#!/bin/sh
if [ $(date +%A) = Friday ]; then
TARFILE=/export/home/student/backupfolder/user2backup$(date +%m-%d-%y).tar
tar -cpf $TARFILE /export/home/student/user2
zip $TARFILE.zip $TARFILE
fi