else
이 스크립트를 실행하면 49행에서만 구문 오류가 발생합니다. 누구든지 이유를 지적할 수 있습니까? 내 스크립트를 실행할 수 없습니다. 내 삭제 스크립트 코드와 내 스크립트에 포함되어야 하는 내용은 다음과 같습니다.
스크립트는 rm 명령을 테스트하고 rm 명령과 동일한 오류 메시지를 표시해야 합니다.
스크립트 이름이 제거되었습니다. 스크립트에 "삭제된" 휴지통 디렉터리를 만듭니다.
$HOME에 .restore.info라는 숨겨진 파일을 만듭니다. 파일의 각 줄에는 삭제된 디렉터리에 있는 파일 이름, 콜론, 파일의 원래 전체 경로가 포함됩니다.
디렉터리에서 파일 이름 형식 "filename_inode"를 삭제합니다.
스크립트가 여러 파일과 와일드카드를 삭제할 수 있는지 확인하세요.
-i(대화형) 및 -v(상세)에 대한 명령줄 인수를 테스트합니다.
1 #/bin/bash
2
3 function directory(){
4 if [ ! -d ~/deleted }
5 then
6 mkdir ~/deleted
7 fi
8 if [ ! -f ~/.restore.info ]
9 then
10 touch ~/.restore.info
11 fi
12 }
13
14 function movefile(){
15 mv $1 ~/deleted/$1
16 echo "file moved to recycle bin"
17 }
18
19 function error_conditions(){
20 #prints error messages and checks if file is in project directory
21 if [ ! -f ~/project ]
22 then
23 echo "cannot remove $filename: no such file or directory"
24 elif [ -d ~/project ]
25 then
26 echo "cannot remove $filename: is a directory"
27 else
28 echo "missing operand"
29 fi
30 }
31
32 function delete_file(){
33 #gets inode for filename
34 inode=$(stat -c%i $filename)
35 filename=$1
36 pwd=$(readlink -e$filename)
37 if $interactive
38 then
39 if [ $verbose = true ]; then
40 read -p "Are you sure you want to delete $filename?" i_input
41 if [ $i_input == "y" ] || [ $i_input == "Y" }
42 then
43 mv $filename ~/delete/${filename}_inode
44 echo ${filename}_$inode:$pwd>>~/.restore.info
45 echo "$filename has been deleted"
46 else
47 echo "Nothing has been deleted"
48 fi
49 else
50 read -p "Are you sure you want to delete $filename?" i_input
51 if [$i_input == "y" ] || [ $i_input == "Y" ];
52 then
53 mv $filename ~/deleted/${filename}_$inode
54 echo ${filename}_$inode:$pwd>>~/.restore.info
55 else
56 echo Aborted
57 fi
58 fi
59 elif $verbose
60 then
61 mv $filename ~/deleted/${filename}_inode
62 echo ${filename}_$inode:$inode:pwd>>~/.restore.info
63 echo "$filename has been deleted."
64 else
65 mv $filename ~/deleted/${filename}_$inode
66 echo ${filename}_$inode:$pwd>>~/.restore.info
67 echo Executed
68 fi
69 }
70 interactive=false
71 verbose=false
72 recursive=false
73 while getopts iv option
74 do
75 case $option in
76 i) interactive=true;;
77 v) verbose=true;;
78 esac
79 done
80 shift $[OPTIND-1]
81 for i in $*
82 do
83 filename=$i
84 baseline=$(basename $i)
85 if [ "$i" == "" ];
86 then
87 echo "No filename provided"
88 elif [ -d $filename ];
89 then
90 if [ ! $recursive = true ];
91 then
92 echo "Directory name provided, please provide a file"
93 fi
94 elif [ ! -f $filename ];
95 then
96 echo "File does not exist"
97 elif [ "$basefule" == "safe_rm" ]
98 then
99 echo "Attempting to delete safe_rm"
100 else
101 delete_file $filename
102 fi
103 done
104
105 #################################M A I N###############################
106 directory
107 error_conditions $*
108 delete_file $*
109 move_file $r
답변1
41행에 잘못된 닫는 괄호가 있습니다.